C Primer Plus 第6版 第六章 编程练习参考答案
编译环境VS Code+WSL GCC 源码请到文末下载 。
注意:本章部分题目中用到了math.h 用gcc编译时加上-lm参数。
/*第1题*************************/ #include<stdio.h> int main(void) { int i; char char_arry[26]={0}; for(i=0;i<26;i++) { char_arry[i]='a'+i; } for(i=0;i<26;i++) { printf("%c ",char_arry[i]); } putchar(10); } /*第2题*************************/ #include<stdio.h> int main() { int i,j; for (i = 0; i < 5; i++) { for(j = 0; j < i+1 ;j++) putchar('$'); putchar('\n'); } return 0; } /*第3题*************************/ #include<stdio.h> int main() { int i,j; for (i = 0; i < 6; i++){ for(j = 0;j <= i;j++) printf("%c",'F'-j); putchar(10); } return 0; } /*第4题*************************/ #include<stdio.h> int main() { char start = 'A'; int i,j; for(i=0;i<6;i++){ for(j=0;j<=i;j++){ printf("%c",start); start++; } putchar(10); } return 0; } /*第5题*************************/ #include<stdio.h> int main() { char a,tmp; int i,j; printf("请输入一个大写字母:"); tmp=a=getchar(); for(i=5;i>0;i--){ for(j=i-1;j>0;j--) putchar(' '); for(j=6-i;j>0;j--) printf("%c",a++); a--; for(j=5-i;j>0;j--) printf("%c",--a); putchar('\n'); a=tmp; } return 0; } /*第6题*************************/ #include<stdio.h> int main() { int input; printf("请输入表格的行数:"); scanf("%d",&input); printf("-------------------\n"); for(;input>0;input--){ printf("| %3d | %3d | %3d |\n",input,input*input,input*input*input); printf("-------------------\n"); } return 0; } /*第7题*************************/ #include<stdio.h> #include<string.h> int main() { char arry[100]={0}; int lenth,i; printf("请输入一些字符:"); scanf("%s",arry); lenth = strlen(arry); printf("逆序打印这些字符:"); for(i= --lenth;i>=0;i--) { putchar(arry[i]); } putchar(10); return 0; } /*第8题*************************/ #include<stdio.h> int main() { float input_1,input_2,res; printf("请输入两个数(输入非数字退出):"); while (scanf("%f %f",&input_1,&input_2)==2) { if(input_1>input_2){ res = (input_1 - input_2) / (input_1 * input_2); } else if(input_1<input_2) { res = (input_2 - input_1) / (input_2 * input_1); } else { res = 0; } printf("%g %g %g\n",input_1,input_2,res); } } /*第9题*************************/ #include<stdio.h> float func(double input_1,double input_2); int main() { float input_1,input_2,res; printf("请输入两个数(输入非数字退出):"); while (scanf("%f %f",&input_1,&input_2)==2) { res = func(input_1,input_2); printf("%g %g %g\n",input_1,input_2,res); } } float func(double input_1,double input_2) { double res; if(input_1>input_2){ res = (input_1 - input_2) / (input_1 * input_2); } else if(input_1<input_2) { res = (input_2 - input_1) / (input_2 * input_1); } else { res = 0; } return res; } /*第10题*************************/ #include<stdio.h> #include<string.h> int main() { int input_1,input_2,res,i; char tmp; printf("请输入一个下限整数和一个上限整数(输入相同的数退出程序):"); while (1) { if(scanf("%d %d",&input_1,&input_2)!=2){ do{tmp =getchar();} while(tmp != '\n'); //while(tmp>='0'&&tmp<='9');//有个BUG,在输入N个非数字字符就会输出N个错误提示。 printf("输入错误,请重新输入:"); continue; } else if(input_1 > input_2){ printf("输入错误,请重新输入:"); continue; } else if(input_1 == input_2){ printf("程序退出...\n"); break; } for(i=input_1;i<=input_2;i++) res += i*i; printf("两个数的平方从%d到%d的和是%d\n",input_1*input_1,input_2*input_2,res); printf("请输入一个下限整数和一个上限整数(输入相同的数退出程序):"); } } /*第11题*************************/ #include<stdio.h> int main() { int arry[]={1,2,3,4,5,6,7,8}; int i; for(i=7;i>=0;i--){ printf("%d",arry[i]); } putchar(10); return 0; } /*第12题*************************/ #include<stdio.h> double arr_add_fun(int len); double arr_add_fun_(int len); int main() { int arr_len; double res; while (1) { printf("请输入次数(输入负数或0退出):"); scanf("%d",&arr_len); if (arr_len > 0) { res = arr_add_fun(arr_len)+arr_add_fun_(arr_len); printf("%d项的和是%g\n",arr_len,res); } else { printf("程序退出...\n"); break; } } return 0; } double arr_add_fun(int len) { double res = 0,cnt = 1.0; int i; for(i=1;i<=len;i++) { res += 1.0 / cnt++; } return res; } double arr_add_fun_(int len) { double res = 0,cnt = 1.0; int i; for(i=1;i<=len;i++) { if(i%2 == 0){ res -= 1.0 / cnt++; } else { res += 1.0 / cnt++; } } return res; } /*第13题*************************/ #include<stdio.h> #include<math.h> /************************************/ /* 请添加-lm参数,例如:gcc 13.c -lm */ /************************************/ int main() { int i,res; int arry[8],*p=arry; for(i=0;i<8;i++){ arry[i]=pow(2,i); } i=0; do{ printf("%d ",arry[i++]); } while (i<8); putchar(10); return 0; } /*第14题*************************/ #include<stdio.h> int main() { double num_arr[8],num_arr_[8]; int i; printf("请输入8个数(按Enter键入)\n"); for(i=0;i<8;i++){ printf("请输入第%d个数:",i+1); scanf("%lf",&num_arr[i]); } num_arr_[0]=num_arr[0]; for(i=1;i<8;i++) num_arr_[i]=num_arr[i]+num_arr_[i-1]; for(i=0;i<8;i++) printf("%-3g ",num_arr[i]); putchar(10); for(i=0;i<8;i++) printf("%-3g ",num_arr_[i]); putchar(10); return 0; } /*第15题*************************/ #include<stdio.h> int main() { char arry[255]={0}; char rec,i=0; printf("请输入一些字符:"); do{ scanf("%c",&rec); arry[i]=rec; i++; } while (rec != '\n'); arry[i]='\0'; for(i--;i>=0;i--) { printf("%c",arry[i]); } putchar(10); return 0; } /*第16题*************************/ #include<stdio.h> int main() { int year=0; double daphne=100,deirdre=100; do{ year++; daphne += 100 * 0.1; deirdre *= 1.05; } while (deirdre <= daphne); printf("需要%d年deirdre会超过daphne。\n",year); printf("deirdre能拿到%g dollars\ndaphne能拿到%g dollars\n",deirdre,daphne); return 0; } /*第17题*************************/ #include<stdio.h> int main() { int year = 1; double dollar=1000000; do{ year++; dollar += dollar * 0.08; dollar -= 100000; } while (dollar > 100000); printf("需要%d年。\n",year); return 0; } /*第18题*************************/ #include<stdio.h> int main() { int frieds = 5,week = 1; while (frieds <= 150){ frieds -= week; frieds *= 2; if(frieds > 150) break; printf("第%d周有%d个朋友。\n",week,frieds); week++; } return 0; }
分类:
C语言
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」