八十七、回答结果(结构体变量传递)
输出依然为3,a。函数f传递的是变量a的一个副本复制。
#include "stdio.h" struct student { int x; char c; } a; main() {a.x=3; a.c='a'; f(a); printf("%d,%c",a.x,a.c); } f(struct student b) { b.x=20; b.c='y'; }
八十九、某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
#include<stdio.h> //先设计一个判断数字是否为4位的函数 int Judge_Num(unsigned int a) { int n=a/1000; if((n>=1)&&(n<=9)) return 1; else return 0; } //编码函数 unsigned int Code_Num(unsigned int a) { unsigned int b[4],m=a; int i; for(i=0;i<4;i++) { b[i]=m%10; b[i]=(b[i]+5)%10; m=(m-m%10)/10; } return b[3]+b[2]*10+b[1]*100+b[0]*1000; } int main() { unsigned x,y; unsigned int Code_Num(unsigned int a); printf("请输入一个四位数 "); scanf("%d",&x); if(Judge_Num(x)) { y=Code_Num(x); printf("原数为%d,加密后为%d。 ",x,y); } else { printf("原数为%d,位数不为4。 ",x); } getch(); return 0; }
九十、读结果。
54321
#include "stdio.h" #define M 5 main() {int a[M]={1,2,3,4,5}; int i,j,t; i=0;j=M-1; while(i<j) {t=*(a+i); *(a+i)=*(a+j); *(a+j)=t; i++;j--; } for(i=0;i<m;i++) printf("%d",*(a+i)); }
九十六、计算字符串中子串出现的次数。
#include<stdio.h> #include<string.h> int main() { char str[]="i a m xyz amtys 1280i a m!OPi a m**"; char str1[]="i a m "; int i,j,k; int len=strlen(str); int len1=strlen(str1); i=j=k=0; while(i<len) { if(str[i]!=str1[j]) { i++; continue; } else { for(j=0;j<len1;i++,j++) { if(str[i]==str1[j]) continue; else break; } if(j==len1) { j=0; k++; } } } printf("出现次数为%d. ",k); getch(); return 0; }
九十七、从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。
#include<stdio.h> #include<stdlib.h> int main() { char c; FILE *fp; fp=fopen("ex97.txt","wb"); if(fp==NULL) { printf("File Open Error! "); exit(1); } printf("please input a string ending by '#'. "); while((c=getchar())!='#') putc(c,fp); fclose(fp); return 0; }
九十八、从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。输入的字符串以!结束。
#include<stdio.h> #include<stdlib.h> int main() { char str[1000]; FILE *fp; int i=0; printf("input a string. "); gets(str); while(str[i]!='