谭浩强C语言课后题
谭浩强课后习题解答
是一只派大鑫
知识改变命运,技术成就人生
展开
-
C语言逻辑填空题——审问嫌疑犯
这是一道填空题,题目选自 中国海洋大学2017年硕士研究生入学考试试题题目描述:公安人员审问四名窃贼嫌疑犯。已知,这四人当中仅有一名是窃贼,还知道这四人中每人说话要么全是真的,要么全是假的。在回答公安人员的问题中:甲说:“乙没有偷,是丁偷的。”乙说:“我没有偷,是丙偷的。”丙说:“甲没有偷,是乙偷的。”丁说:“我没有偷。”请根据这四人的答话编程判断谁是盗窃者。仔细阅读下面的程序并补充完整。#include<stdio.h>int main(){原创 2021-10-18 16:27:47 · 13846 阅读 · 2 评论 -
C语言文件操作——输入数据存到文件,从文件读取到结构体
早年真题试卷最后大题几乎都是手写文件的一些操作程序,虽然文件操作并不难,但是真正手写出来感觉又是很不一样的。原创 2021-10-15 14:37:23 · 23171 阅读 · 2 评论 -
C语言 指针+二维数组详解 (应付期末、考研的最强笔记,建议收藏)
本文通过从二维数组的介绍开始,讲解什么是二维数组——>怎么定义和使用二维数组——>怎么引用二维数组的元素——>怎么通过指针来引用二维数组(具体包括多种分式)来逐步说明指针+二维数组的配合使用,相信学完本文内容,读者对于指针和二维数组会有更加深刻的印象和理解。通过学校期末考试和考研C语言内容完全足够!!!原创 2021-09-03 16:56:22 · 40720 阅读 · 42 评论 -
C语言课后习题(69)
谭浩强C语言第五版的一些课后习题第十章 第十一题从键盘输入若干行字符,存到磁盘文件,读入数据,将其中的小写转大写int main(){ int i; FILE *fp; char str[100],c; //1. 打开文件 if((fp=fopen("f:\\A.txt","w"))==NULL){ printf("can not open A.txt\n"); } //2. 写入数据 printf("输入数据 以!结束:\n"); int flag=1; whi原创 2021-07-15 07:23:03 · 38511 阅读 · 0 评论 -
C语言课后习题(68)
谭浩强C语言第五版的一些课后习题第十章 第四题合并A B文件信息 并安字母顺序排序,输出到C文件int main(){ char str1[20],str2[20]; FILE *p1,*p2,*p3; int i=0; // 1 写入 printf("输入字符串1:\n"); scanf("%s",str1); if((p1=fopen("f:\\A.txt","w"))==NULL){ printf("can not open A.txt原创 2021-07-15 07:21:57 · 38160 阅读 · 0 评论 -
C语言课后习题(67)
谭浩强C语言第五版的一些课后习题第十章 第三题输入字符串,将小写转为大写,输出到一个文件,以!结束实现:输入后将小写转大写了再存到文件中int main(){ FILE *fp; char str[100]; int i=0; if((fp=fopen("f:\\test100.txt","w"))==NULL){ printf("can not open file\n"); } printf("输入字符串\n"); gets(str); while(str[i]!原创 2021-07-15 07:20:44 · 37837 阅读 · 0 评论 -
C语言课后习题(66)
谭浩强C语言第五版的一些课后习题第九章 第三题编写print,输出成绩数组,包括num,name,score【3】struct Student{ char num[6]; char name[10]; int score[3];}std[N];int main(){ void print(struct Student std[5]); int i,j; for(i=0;i<N;i++){ printf("输入第%d个学生记录:\n",i+1); printf(原创 2021-07-15 07:19:02 · 39696 阅读 · 7 评论 -
C语言课后习题(65)
谭浩强C语言第五版的一些课后习题第九章 第一题定义一个结构体变量 年月日 计算改日在本年是第几天struct{ int year; int month; int day;}date;int main(){ int i,days; int d[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; printf("输入年 月 日\n"); scanf("%d%d%d",&date.year,&date.month,&da原创 2021-07-15 07:18:03 · 38359 阅读 · 0 评论 -
C语言课后习题(64)
谭浩强C语言第五版的一些课后习题第八章 第十六题输入一个字符串,含有数字和非数字,将连续的数字作为一个整数存放到数组中,并统计有多少个整数,然后输出int main(){ char str[50],*p; printf("输入字符串\n"); gets(str); p=str; int i=0,j=0,k,e10; //j记录位数个数 k记录当前位数 e10为当前数字需要乘的10的倍数 int dig;//dig 保存字符转为的数字 int a[10],*pp=a;/原创 2021-07-15 07:16:53 · 39704 阅读 · 0 评论 -
C语言课后习题(63)
谭浩强C语言第五版的一些课后习题第八章 第十四题n个数逆序排列 然后输出int main(){ void print(int *p,int n); void sort(int *p,int n); int i,n; printf("想要几个数?\n"); scanf("%d",&n); int num[20]; int *p; printf("输入%d个数:\n",n); for(i=0;i<n;i++){ scanf("%d",&num[i])原创 2021-07-15 07:15:40 · 37705 阅读 · 0 评论 -
C语言课后习题(62)
谭浩强C语言第五版的一些课后习题第八章 第十二题用指针数组处理上一题int main(){ void print(char *p1[]); void sort1(char *s[]); void sort2(char *s[]); char str[4][10],* p[4]; int i; for(i=0;i<4;i++){ p[i]=str[i]; //指针数组赋值为每一列首地址 } printf("输入4个字符串:\n"); for(i=0;i<原创 2021-07-14 08:05:53 · 40542 阅读 · 0 评论 -
C语言课后习题(61)
谭浩强C语言第五版的一些课后习题第八章 第十一题输入4个等长字符串,用函数排序,然后输出int main() { void print(char s[4][5]); void sort(char s[4][5]); char str[4][5]; printf("输入4个等长字符串 长度为5:\n"); int i; for (i = 0; i < 4; i++) { scanf("%s", str[i]); } sort(str); printf("排序后的结原创 2021-07-14 08:04:38 · 39949 阅读 · 0 评论 -
C语言课后习题(60)
谭浩强C语言第五版的一些课后习题第八章 第九题3×3矩阵转置int main(){ void move(int *p1); int a[3][3]; printf("输入3行3列的矩阵:\n"); int i,*p; for(i=0;i<3;i++){ scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]); } p=&a[0][0];//将第一个元素的地址赋给指针p printf("原矩阵为:\n".原创 2021-07-14 08:03:21 · 40351 阅读 · 0 评论 -
C语言课后习题(59)
谭浩强C语言第五版的一些课后习题第八章 第八题输入一行文字,统计大写 小写 空格 数字 其他 的个数int main(){ int up=0,low=0,dig=0,space=0,other=0; int i=0; char *p,str[30]; printf("输入一行字符串:\n"); gets(str); p=str; while(*p!='\0'){ if((*p>='A')&&(*p<='Z')) up++; else if(原创 2021-07-14 08:01:59 · 39445 阅读 · 0 评论 -
C语言课后习题(58)
谭浩强C语言第五版的一些课后习题第八章 第七题n个字符串 m个开始 复制为另一个字符串int main(){ char s1[50],s2[50]; printf("输入字符串:\n"); gets(s1); int i,n; printf("需要从第几个开始复制:\n"); scanf("%d",&n); char *p1=s1; char *p2=s2; for(i=0;i<n-1;i++){ p1++; }//退出for时指向开始复制的值原创 2021-07-14 08:00:48 · 39662 阅读 · 0 评论 -
C语言课后习题(57)
谭浩强C语言第五版的一些课后习题第八章 第六题指针求字符串长度int main(){ char str[50]; char *p=str; printf("输入字符串:\n"); scanf("%s",str); //gets(str); int i=0,len=0; while(*(p+i)!='\0'){ len++; i++; } printf("总共有 %d 个字符\n",len);}...原创 2021-07-14 07:59:18 · 39545 阅读 · 0 评论 -
C语言课后习题(56)
谭浩强C语言第五版的一些课后习题第八章 第五题报数 报到3退出 求最后一人 约瑟夫问题int main(){ int i,k,m,n,num[50],*p; printf("输入总人数:\n"); scanf("%d",&n); p=num; for(i=0;i<n;i++){ //给人赋值 *(p+i)=i+1; } i=0; k=0; m=0; //i作为指针循环变量,k为记录从0到3,m为退出人数 结束循环.原创 2021-07-14 07:58:32 · 38840 阅读 · 0 评论 -
C语言课后习题(55)
谭浩强C语言第五版的一些课后习题第八章 第四题n个整数,前面的数后移m个位置,后m变为前面m个数int main(){ void move(int *p,int n,int m); int num[20]; printf("想要多少个数?:"); int N; scanf("%d",&N); printf("ok 输入%d个数:\n",N); int i; for(i=0;i<N;i++){ scanf("%d",&num[i]); } pri原创 2021-07-14 07:57:19 · 40277 阅读 · 0 评论 -
C语言课后习题(54)
谭浩强C语言第五版的一些课后习题第八章 第三题输入10个整数 最小与第一个交换 最大与最后一个交换int main(){ void deal(int *p1); int a[5]; printf("输入五个数:\n"); int i; int *p=a; for(i=0;i<5;i++){ scanf("%d",&a[i]); } deal(p); printf("处理后的结果为:\n"); for(i=0;i<5;i++){ printf(原创 2021-07-14 07:56:19 · 39067 阅读 · 0 评论 -
C语言课后习题(53)
谭浩强C语言第五版的一些课后习题第八章 第二题输入三个字符串,从小到大输出int main(){ char a[10],b[10],c[10]; printf("输入三个字符串:\n"); scanf("%s%s%s",a,b,c); char *p1=a; char *p2=b; char *p3=c; if(strcmp(a,b)>0){ p1=b; p2=a; } if(strcmp(a,c)>0){ p1=c; p3=a; } if(strcm原创 2021-07-13 08:04:06 · 40172 阅读 · 0 评论 -
C语言课后习题(52)
谭浩强C语言第五版的一些课后习题第八章 第一题输入三个整数,从小到大排序int main(){ void change(int *x,int *y); int a,b,c; printf("输入三个整数:\n"); scanf("%d%d%d",&a,&b,&c); int *p1,*p2,*p3; p1=&a; p2=&b; p3=&c; if(*p1>*p2) change(p1,p2); if(*p1>*p3原创 2021-07-13 08:03:03 · 40742 阅读 · 0 评论 -
C语言课后习题(51)
谭浩强C语言第五版的一些课后习题第七章 第十八题输出具体日期是该年第几天int main(){ int pdrn(int year); int ts(int month); int year,month,day; printf("输入年 月 日:\n"); scanf("%d%d%d",&year,&month,&day); int ans=0;//记录总天数 ans=ts(month); int days=0; if((pdrn(year)==1原创 2021-07-13 08:02:02 · 40181 阅读 · 0 评论 -
C语言课后习题(50)
谭浩强C语言第五版的一些课后习题第七章 第十七题递归 整数转字符串int main(){ void convert(int n); //思路 若为负数 先输出 - 若不是 直接调用函数 printf("输入整数:\n"); int n; scanf("%d",&n); if(n<0){ putchar('-'); putchar(' '); n=-n; } convert(n); printf("\n"); return 0;}voi原创 2021-07-13 08:00:46 · 39298 阅读 · 0 评论 -
C语言课后习题(49)
谭浩强C语言第五版的一些课后习题第七章 第十四题求成绩float score[4][3];float avg_std[4];//保存每个人的平均分 float avg_cla[3];//保存每门课的平均分 int main() { void avgscore(void); void avgclass(void); float highest(void); float fangcha(void); int i, j; for (i = 0; i < 4; i++) {原创 2021-07-13 07:59:52 · 40675 阅读 · 1 评论 -
C语言课后习题(48)
谭浩强C语言第五版的一些课后习题第七章 第十一题冒泡法对字符排序int main(){ void bubblesort(char a[]); char arr[10]; printf("输入十个字符:\n"); scanf("%s",arr); bubblesort(arr); printf("%s\n",arr); return 0;}void bubblesort(char a[]){ int i,j; char t; for(i=0;i<strlen(a原创 2021-07-13 07:58:38 · 38546 阅读 · 0 评论 -
C语言课后习题(47)
谭浩强C语言第五版的一些课后习题第七章 第十题输入一行字符,输出最长的单词/*实现思路,一个判断是否为字符串的函数 一个返回最长字符串初始下标的函数在main里输出由下标开始,到非字母结束 即为最长单词 */int main(){ int ifzm(char c); int longest(char string[]); char str[50]; int i;//i用于接收开始下标 printf("输入一行字母:\n"); gets(str); for(i=原创 2021-07-13 07:57:23 · 37443 阅读 · 8 评论 -
C语言课后习题(46)
谭浩强C语言第五版的一些课后习题第七章 第九题统计字符串中的字母,数字,空格和其他(应用gets而不是scanf)int zm=0,num=0,space=0,other=0;int main(){ void count(char s[]); char str[40]; printf("输入字符串:\n"); gets(str); count(str); printf("字母个数为:%d 数字个数为:%d 空格个数为:%d 其他个数为:%d\n",zm,num,space,o原创 2021-07-13 07:56:21 · 39198 阅读 · 0 评论 -
C语言课后习题(45)
谭浩强C语言第五版的一些课后习题第七章 第八题输入一个十位数,中间输出带空格int main(){ void space(int n); int n; printf("输入一个四位数的整数:\n"); scanf("%d",&n); if(n<10000&&n>=1000){ space(n); }else{ printf("输入的数字有误:\n"); } return 0;}void space(int n){原创 2021-07-13 07:55:21 · 38586 阅读 · 0 评论 -
C语言课后习题(44)
谭浩强C语言第五版的一些课后习题第七章 第七题将一个字符串中的元音字母复制到另一个,输出int main(){ void yyzm(char s1[],char s2[]); char s1[30],s2[30]; printf("输入一个字符串:\n"); scanf("%s",s1); printf("输入的字符串为:%s\n",s1); printf("里面有的元音字母为:\n"); yyzm(s1,s2); printf("%s",s2); return 0;}原创 2021-07-12 08:13:20 · 39175 阅读 · 0 评论 -
C语言课后习题(43)
谭浩强C语言第五版的一些课后习题第七章 第六题连接两个字符串int main(){ void pjstring(char s1[],char s2[],char s3[]); char s1[50],s2[50],s3[100]; printf("输入第一个字符串:\n"); scanf("%s",s1); printf("输入第二个字符串:\n"); scanf("%s",s2); pjstring(s1,s2,s3); printf("拼接后结果为:\n%s",s3);原创 2021-07-12 08:12:16 · 38171 阅读 · 0 评论 -
C语言课后习题(42)
谭浩强C语言第五版的一些课后习题第七章 第五题反序存放字符串int main(){ void nx(char s[]); char s1[40]; printf("输入一个字符串:\n"); scanf("%s",s1); printf("逆序的结果为:\n"); nx(s1); printf("%s",s1); return 0;}void nx(char s[]){ int i,k; k=strlen(s)-1; char t; for(i=0;i<k原创 2021-07-12 08:11:18 · 38798 阅读 · 0 评论 -
C语言课后习题(41)
谭浩强C语言第五版的一些课后习题第七章 第四题方阵行列互换int main(){ void print(int arr[][N]); void change(int arr[][N]); int arr[N][N],i,j; printf("输入%d行%d列的矩阵:\n",N,N); for(i=0;i<N;i++){ for(j=0;j<N;j++){ scanf("%d",&arr[i][j]); } } printf("修改前:\n")原创 2021-07-12 08:10:25 · 35879 阅读 · 0 评论 -
C语言课后习题(40)
谭浩强C语言第五版的一些课后习题第七章 第三题判断素数int main(){ int n,p,i; printf("输入一个数 判断是否为素数:\n"); scanf("%d",&n); bool flag=true; for(i=2,p=sqrt(n);i<=p;i++){ if(n%i==0){ flag=false; break; } } if(flag==true){ printf("%d是素数\n",n); }else{原创 2021-07-12 08:09:33 · 35140 阅读 · 0 评论 -
C语言课后习题(39)
谭浩强C语言第五版的一些课后习题第七章 第二题求方程ax^2+bx+c的根int main(){ float a,b,c; printf("输入x^2的系数:\n"); scanf("%f",&a); printf("输入x的系数:\n"); scanf("%f",&b); printf("输入常数项:\n"); scanf("%f",&c); float det; det=b*b-4*a*c; printf("det=%f\n",det);原创 2021-07-12 08:08:26 · 36895 阅读 · 0 评论 -
C语言逻辑运算符&&和||,一篇文章带你读懂逻辑表达式!
C语言中 &&和||的问题 一篇文章带你读懂逻辑表达式!一篇文章,带你深刻理解逻辑运算符在表达式中的运算情况原创 2021-07-12 08:00:04 · 62579 阅读 · 33 评论 -
C语言课后习题(38)
谭浩强C语言第五版的一些课后习题第七章 第一题求最大公约数和最小公倍数(输入数字,函数调用)int main() { int maxf(int a, int b); int minf(int a, int b); int a, b;//定义两个数 用来求它们的最大公约数和最小公倍数 printf("输入两个数:\n"); scanf("%d%d", &a, &b); int max = maxf(a, b); int min = minf(a, b); pr原创 2021-07-11 08:00:12 · 38137 阅读 · 0 评论 -
C语言课后习题(37)
谭浩强C语言第五版的一些课后习题第六章 第十五题字符串复制int main(){ char s1[80],s2[40]; printf("输入字符串1:\n"); scanf("%s",s1); printf("输入字符串2:\n"); scanf("%s",s2); int i=0,j=0; while(s2[i]!='\0'){ s1[i]=s2[i]; i++; }//退出while表示i在s2最后了 s1[i]='\0'; printf("复制后的字符原创 2021-07-11 07:59:14 · 37315 阅读 · 0 评论 -
C语言课后习题(36)
谭浩强C语言第五版的一些课后习题第六章 第十四题字符串比较int main(){ char s1[40],s2[40]; printf("输入s1:\n"); scanf("%s",s1); printf("输入s2:\n"); scanf("%s",s2); printf("输入完毕 开始比较\n"); int i=0,jg; while((s1[i]==s2[i])&&s1[i]!='\0'){ i++; }//退出while表示 不等于或s1到头原创 2021-07-11 07:58:21 · 36052 阅读 · 0 评论 -
C语言课后习题(35)
谭浩强C语言第五版的一些课后习题第六章 第十三题字符串拼接int main(){ char s1[80],s2[40]; printf("输入字符串1:\n"); scanf("%s",s1); printf("输入字符串2:\n"); scanf("%s",s2); int i=0,j=0; while(s1[i]!='\0'){ i++; }//i已指向s1最后 while(s2[j]!='\0'){ s1[i++]=s2[j++]; } s1[i]='原创 2021-07-11 07:57:18 · 36939 阅读 · 0 评论 -
C语言课后习题(34)
谭浩强C语言第五版的一些课后习题第六章 第十二题密码 A->Z B->Y a->z b->yint main(){ int i,num; char ch[80],tran[80]; printf("输入需要加密的字符串:\n"); gets(ch); printf("确认需要加密的密码:%s\n",ch); i=0; while(ch[i]!='\0') { if((ch[i]>='A')&&(ch[i]<='Z')).原创 2021-07-11 07:56:08 · 35626 阅读 · 0 评论