{
int c;
if(n==1) c=1;
else c=2*(num(n-1)+1); return c; }
void main() {
printf(\}
7.用选择法,对十个整数按从小到大的顺序排列(排序用函数实现)。
void sort(int a[],int n) {
int i,j,k,t;
for(i=0;i k=i; for(j=i+1;j void main() { int i,a[10]={1,3,2,4,5,6,9,0,8,7}; sort(a,10); for(i=0;i<10;i++) printf(\ printf(\} 8.编一程序,查找输入的N个字符串中最长的那个字符串。 #include 33 {char str[N][81],*sp; int k; for(k=0;k for(k=1;k printf(\最长的那个字符串是:\\n%s\\n\ printf(\最长的那个字符串的长度是:%d\\n\} 9.编程序,设二进制数a=00101101,编程序使a的高4位取反,低4位不变,求出这个结果 。 #include main() {unsigned int a=055,b,c,d,e; b=~0<<4; c=a^b; d=~(~0<<8); e=c&d; printf(\ } 10.函数原型说明为int mystrlen(char *s);,其功能是测试字符串s的长度,编制该函数并用相应主函数对其进行测试。 #include { int mystrlen(char *s); char str[80]; gets(str); printf(“%d\\n”, mystrlen(str)); } int mystrlen(char *s) { int len=0; while (*s++) len++; return len; } 34 七、程序分析题 1. 程序1如下: #include { int i,j,k,t,a[10]; printf(\ for(i=0;i<10;i++) scanf(\ for(i=0;i<10;i++) { k=i; 【1】 for(j=i+1;j<10;j++) if(a[j]>a[k]) k=j; 【2】 if(k!=i) { t=a[i]; a[i]=a[k]; a[k]=t; } 【3】 } for(i=0;i<10;i++) printf(\ printf(\} 语句【1】的所用是:假设无序序列中最大的数的下标为第一个数,其下标为i 语句【2】的所用是:找出无序序列中最大的数的下标 语句【3】的所用是:把最大的数与无序序列的第一个数交换 2. 程序2如下: #include \void main() { int i; int f[20]={1,1};【4】 for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1]; 【5】 for(i=0;i<20;i++) { if(i%5==0) printf(\ printf(\ } 【6】 printf(\} 语句【4】的所用是:初始化Fibonacci数列的前两个数为1 语句【5】指的for语句的所用是:循环求出Fibonacci数列的 35 每一项 语句【6】指的for语句的所用是:以每行5个整数每个整数占12格的格式输出Fibonacci数列 3. 程序3如下: #include { int a,b, temp; 【7】 printf(“input the data a and b:”); scanf(“%d %d”,&a,&b); printf(“ %d %d”,a,b);【8】 printf(“change a and b: ”); temp=a; a=b; b=temp; printf(“input the data a and b:”); printf(“%d %d”,a,b); 【9】 printf(“\\n”); } 【7】变数temp的所用是:中间变数 语句【8】和语句【9】的结果一样吗?:不一样 为什么?:因为8是原样输出9是在它们被交换了之后的输出 4. 程序4如下: #include \ void funstr(char *q1,char *q2) { while(*q1) q1++; 【10】 while(*q2) *q1++=*q2++; 【11】 *q1='\\0'; 【12】 } void main() { char a[80]=\ char b[]=\ char *p1,*p2; p1=a; p2=b; funstr(p1,p2); printf(\【13】 } 语句【10】的所用是: 令q1指向字符串a的末尾 36