程序设计基础练习题(全部有答案版) 下载本文

{

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 #include #define N 3 main()

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 void main()

{ 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 void main()

{ 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 void main()

{ 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