文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
printf(\}
思考题:十六进制转换十进制
输入一个字符串(字符串的长度不超过80),对其做如下处理:滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。 例: 输入 Pf4+1
输出 3905
#include
long number;
char str[MAXLEN], num[MAXLEN]; gets(str);
for(k=0,i=0;str[i]!='\\0';i++)
if(str[i]>='0'&&str[i]<='9'||str[i]>='A'&&str[i]<='F'|| str[i]>='a'&&str[i]<='f')
num[k++]=str[i]; num[k]='\\0';
for(number=0,i=0;num[i]!='\\0';i++) {
if(num[i]>='A'&& num[i]<='F') k=num[i]-'A'+10;
else if(num[i]>='a'&&num[i]<='f') k=num[i]-'a'+10;
else if(num[i]>='0'&&num[i]<='9') k=num[i]-'0';
number=number*16+k; }
printf(\}
第四次上机作业参考答案:
9. 数组转置
在主函数中定义一个n(1<=n<=6)维方阵,并从键盘读入数组元素;编写函数transpose(a,n)实现数组a转置;在主函数中输出转置后的方阵。
例:输入 4
1 2 3 4 输出 1 5 9 13 5 6 7 8 2 6 10 14 9 10 11 12 3 7 11 15 13 14 15 16 4 8 12 16
#include
void transpose(int a[][N],int n); void main( ) { int n,i,j;
16文档收集于互联网,如有不妥请联系删除.
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
int a[N][N];
printf(\ scanf(\
printf(\ for(i=0;i scanf(\ printf(\ for(i=0;i printf(\ printf(\ } transpose(a,n); printf(\ for(i=0;i printf(\ printf(\ } } void transpose(int a[][N],int n) { int i,j,t; for(i=0;i a[i][j]=a[j][i]; a[j][i]=t; } } 10. 学生信息 编写4个函数实现下列功能: (1)函数input() 输入20个学生姓名和高考总分; (2)函数sort() 按高考总分从高到低的顺序排序,姓名顺序也随之调整; (3)函数display()显示学生姓名及其高考总分; (4)在主函数中输入一个姓名,编写函数search() 用顺序查找方法找出该学生。若查找 成功,在主函数中显示该生姓名及其高考总分;否则显示查找失败。 #include void input(char name[][LEN],float s[]); void display(char name[][LEN],float s[]); void sort(char name[][LEN],float s[]); int search(char name[][LEN],char s[]); 17文档收集于互联网,如有不妥请联系删除. 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持. void main( ) { int num; char name[N][LEN],student[LEN]; float score[N]; input(name,score); puts(\ display(name,score); sort(name,score); puts(\ display(name,score); printf(\ fflush(stdin); gets(student); num=search(name,student); if(num==-1) puts(\ else printf(\} void input(char name[][LEN],float s[]) { int i; printf(\ for(i=0;i { scanf(\ scanf(\ } } void display(char name[][LEN],float s[]) { int i; printf(\ for(i=0;i { printf(\ printf(\ } } void sort(char name[][LEN],float s[]) { int i,j,k; float t; char string[LEN]; for(i=0;i for(j=i+1;j 18文档收集于互联网,如有不妥请联系删除. 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持. if(k!=i) { t=s[i]; s[i]=s[k]; s[k]=t; strcpy(string,name[i]); strcpy(name[i],name[k]); strcpy(name[k],string); } } } int search(char name[][LEN],char s[]) { int i; for(i=0;i if(strcmp(name[i],s)==0) return i; return -1; } 11. 字符串处理 定义两个C源程序文件:fmain.c 和 fstring.c。fmain.c中包含主函数,实现字符串处理功能选项和字符串的输入与结果的输出。fstring.c中包含两个函数delchar(s,c)和strrev(s),实现删除字符和字符串反转功能。 delchar(s,c):在主函数中输入字符串和要删除的字符,此函数将字符串s中出现的所有c字符删除;再在主函数中输出删除后的字符串。 strrev(s):在主函数中读入字符串,此函数实现将字符串s反转;再在主函数中输出反转后的字符串。 SAMPLE OUTPUT: 3. Reverse a string. 4. Delete a character in a string. Please input your choice: 1 Enter a string: holiday Reversed string is:yadiloh Would you like to continue? (y/n)Y 3. Reverse a string. 4. Delete a character in a string. Please input your choice: 2 Enter a string: one world, one dream Enter a character you want to delete: o Deleted string is:ne wrld, ne dream Would you like to continue?(y/n)N /*fmain.c*/ #include #include \#define N 80 void strreverse(char s[]); void delchar(char s[],char c); void main() { int choice1; char choice2,c,s[N]; 19文档收集于互联网,如有不妥请联系删除. 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持. 12. while(1) { printf(\ printf(\ printf(\ scanf(\ switch(choice1) {case 1: printf(\fflush(stdin); gets(s); strreverse(s); printf(\:\puts(s); break; case 2: printf(\fflush(stdin); gets(s); printf(\ fflush(stdin); c=getchar(); delchar(s,c); printf(\:\ puts(s); break; } printf(\ fflush(stdin); choice2=getchar(); if(choice2=='N' || choice2=='n') break; } } /*fstring.c*/ #include void strreverse(char s[]) { int i,j; char t; j=strlen(s); j--; for(i=0;i { t=s[i]; s[i]=s[j]; s[j]=t; } } void delchar(char s[],char c) { int i,j; char temp[80]; for(i=0,j=0;s[i]!='\\0';) { if(s[i]!=c) temp[j++]=s[i++]; else i++; } temp[j]='\\0'; for(i=0;temp[i]!='\\0';i++) s[i]=temp[i]; s[i]='\\0'; } 分别用函数和带参数的宏,从三个数中找出最大数。 20文档收集于互联网,如有不妥请联系删除.
相关推荐: