华农C语言程序设计实验 下载本文

该文档最终解释权由Yang所有,未经允许不得转载

}

if(!flag)

printf(\}

22

[题目1121:定义存贮字符串的字符数组]

在下面程序中填充定义字符数组的语句,使程序完整。 #include \void main()

{ char s[80]; /*定义字符数组s*/ strcpy(s, \printf(\}

参考程序:

[题目1123:字符串的输入与输出]

下面程序实现从键盘读入字符串,然后输出到屏幕,请填充必要的语句。 #include \void main() {

char s[50];

printf(\gets(s); /*由键盘读入字符串*/ printf(\

printf(\%s\打印字符串*/ }

参考程序:

[题目1122:字符串的合并]

从键盘输入3 个字符串(每个字符串以回车符做为结束标志),将3 个字符串以输入先后顺序合并到

字符串s中,请填空使用程序完整。 #include \#include \main() {

char s[100]=\char a[30];

gets(a); strcat(s, a);

23

gets(a); strcat(s, a); gets(a); strcat(s, a); /*可以写多行代码*/ printf(\}

[自测数据]

该文档最终解释权由Yang所有,未经允许不得转载

[键盘输入]

123 abc 456

[正确输出]

123abc456

参考程序:

[题目1050:寻找字符串]

[提示]方法1:建立双重循环,外层循环变量指示第一个串的查找起始位置,内层循环从起始位置开始判

断第二个字符中是否出现在此处;方法2:使用字符串函数strstr()。 参考程序:

#include \main() { int i,j;

char a[80], b[80]; gets(a); gets(b);

for(i=0;a[i]!='\\0';i++) { for(j=0;b[j]!='\\0';j++) if(a[i+j]!=b[j]) break; if(b[j]=='\\0') break; }

if (a[i]!='\\0') printf(\else printf(\}

24

[题目1059:函数定义]

下面是使用辗转相除法,求最大公约数的程序,请补充完整程序中函数的定义与调用。 #include \int f(int m, int n) {

int r;

while ((r=m%n)!=0) { m=n; n=r; }

return n; }

main() {

int a, b, n;

scanf(\printf(\f(a, b) );

该文档最终解释权由Yang所有,未经允许不得转载

}

[题目1083:编写函数计算阶乘]

下面程序实现由键盘读入整数n,计算并输出n!,请补充完整计算阶乘的函数。 long fanc(int a) { long i,n=1;

for(i=1;i<=a;i++) n=n*i; return n; }

void main() { int n;

scanf(\

25

printf(\}

[题目1124:函数中的变量] 写出下面程序的运行结果: int f1(int x)

{ static int z=3,y=0; y++; z++;

return(x+y+z); }

main()

{ int a=1,k;

for(k=0;k<3;k++) printf(\}

程序运行结果为: 6 8 10

*[题目1084:编写递归调用函数,实现十进制数转二进制数]

下面程序,实现由键盘输入一个正整数(不大于100000000),输出其对应的二进制数(原码表示)。 请填空:

#include \void fun( int i ) { if (i>1) fun(i/2) ;

printf(\}

main() { int n;

scanf(\fun(n) ; }

26

该文档最终解释权由Yang所有,未经允许不得转载

[题目1091:交换两数,由大到小输出]

下面程序,交换两数,使两数由大到小输出,请填空 #include \

void swap( int *p1, int *p2 ) { int temp; temp=*p1; *p1=*p2; *p2=temp; }

int main()

{ int a,b; int *pa,*pb; scanf(\pa=&a; pb=&b;

if(a

[题目1065:数组中的指针] 参考程序:

#include \main()

{ printf(\printf(\printf(\printf(\printf(\printf(\printf(\printf(\printf(\}

[题目1092:函数实现求字符串长度]

下面程序以指针方式传递参数,由函数实现求字符串长度,请填空完成 #include \#include \int f(char *p) { return strlen(p); }

int main() { char s[80]; int i;

scanf(\i=f(s);

printf(\}

该文档最终解释权由Yang所有,未经允许不得转载

[题目1125:定义结构体类型] /

struct student { char name[20]; char sex; int num; float score; }

28

main() {

struct student stu; scanf(\scanf(\scanf(\scanf(\printf(\printf(\printf(\printf(\}

29

二、实验内容

[题目1098:链表结点的插入] 有结构体类型定义,

struct student

{ long num; /*学号*/ int score; /*成绩*/

struct student *next; /*指针*/ };

程序首先完成创建两个链表,要求补充完成按学号顺序插入链表结点的函数:

struct student *insert(struct student *head, struct student *stud) {

struct student *p0,*p1,*p2; p1=head; p0=stud;

if(head==NULL){head=p0;p0->next=NULL;} else

{while((p0->num>p1->num)&&(p1->next!=NULL)) { p2=p1;

p1=p1->next;}

if(p0->num<=p1->num)