安徽大学_C语言平时作业 下载本文

实验十一

1、用指针方法,编写一个函数,求矩阵主对角线元素之和Sum。 #include main()

{int i,j,a[3][3],*p=*a,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) {scanf(\if(i==j)sum+=*p; p++; }

printf(\}

2、编一个程序,输入15个整数存入一维数组,按逆序存放后再输出(用指针完成)。 #include main()

{ int i,a[15],*p=a,*q,temp; for(i=0;i<15;i++) scanf(\q=&a[14];

for(i=0;i<7;i++) {temp=*p; *p=*q; *q=temp; p++; q--; } p=a;

for(i=0;i<15;i++) printf(\}

3、输入一个3×6的二维整型数组,输出其中最大值、最小值以及它们所在行和列的下标(用指针完成)。

#include main()

{int i,j,a[3][6],*p=*a,min,max,xb0_h,xb0_l,xb1_h,xb1_l; for(i=0;i<3;i++) for(j=0;j<6;j++) {scanf(\if(i==0&&j==0)

{max=*p;min=*p; xb0_h=0;xb0_l=0; xb1_h=0;xb1_l=0; }

if(max<*p)

{max=*p;xb1_h=i;xb1_l=j;} if(min>*p)

{min=*p;xb0_h=i;xb0_l=j;} p++; }

printf(\最大值为:%d,行标:%d,列标:%d\\n\printf(\最小值为:%d,行标:%d,列标:%d\\n\}

4. 用指针编写程序实现:输入一个字符串,计算该字符串的长度,并统计该串中含小写字母、大写字母和其他字符的个数。

#include main()

{char a[100],*p=a;

int n=0,xiao=0,da=0,qita=0; printf(\请输入一个字符串:\ gets(p); while(*p) {n++;

if(*p>='a'&&*p<='z')xiao++; else if(*p>='A'&&*p<='Z')da++; else qita++; p++; }

printf(\字符串长度=%d\

printf(\小写字母个数=%d,大写字母个数=%d,其他字符个数=%d\\n\}

5. 用指针编写程序完成,将字符串a赋给一个字符数组,然后从第一个字母开始间隔地输出该串。

#include main()

{char a[100],*p=a; int n=0;

printf(\请输入一个字符串:\ gets(p); while(*p) {n++;

if(n%2==1)putchar(*p); p++; } }

6. 编写一个指针型函数,从键盘接收一个1~7之间的整数,根据指定的数字,返回与该数字相对应的是星期几。例如数字6则返回Saturday。(此题为选做)

#include

char *f(int m,char (*p)[10]) {if(m==7)m=0; p+=m; return p; }

main() {int n; char

c[7][10]={\;

q=c; do

{printf(\请输入一个1-7的整数:\ scanf(\}

while(n<1||n>7); printf(\}

7. 用指针编写程序实现,将一个字符串按逆序存放。要求①主函数中完成字符串的输入和输出。②子函数完成逆序存放。(此题为选做)

#include #include void g(char a[]) {int n,m; char *p=a,t; m=strlen(a);

for(n=0;n

{t=*(p+n);*(p+n)=*(p+m-n-1);*(p+m-n-1)=t;} }

main()

{char c[50],*q=c;

printf(\请输入一个字符串:\gets(q); g(c);

printf(\逆序后的字符串:\puts(q); }

实验十二

1. 编写程序:定义一个10个元素的职工结构体数组(职工号、姓名、性别、出生年份、职务),从键盘输入数据后,输出年龄最大的和最小的职工信息。

#include main()

{int i,max=0,min=0,year1,year2; struct zg

{char num[10]; char name[20]; char sex[3]; int year; char zw[10]; }z[10];

for(i=0;i<10;i++)

{printf(\输入第%d位职工的工号、姓名、性别、职务、出生年份\\n\ scanf(\if(i==0){year1=z[0].year;year2=z[0].year;} if(year1>z[i].year){year1=z[i].year;max=i;} if(year2

printf(\年龄最大者:%s %s %s %d %s\\n\

printf(\年龄最小者:%s %s %s %d %s\\n\

}

2. 试利用指向结构体的指针编制一程序,实现输入三位学生的学号、姓名、数学期中和期末成绩,然后①求出每一位学生的平均成绩并输出成绩表②按成绩由高到底排序输出三位学生的相关信息。

#include main()

{int i=0,j,n[3]={0,1,2},t; struct student {char num[10]; char name[20]; int grade1,grade2; float aver; }stu[3],*p;

for(p=stu;p

{printf(\请输入第%d位学生的学号、姓名、期中成绩、期末成绩:\

scanf(\ p->aver=(p->grade1+p->grade2)/2.; i++; }

printf(\成绩表:\\n\

printf(\姓名 期中成绩 期末成绩 平均成绩\\n\for(p=stu;p

printf(\for(i=0;i<3;i++) for(j=i;j<3;j++)

if(stu[i].aver

printf(\学号 姓名 期中成绩 期末成绩 平均成绩\\n\for(i=0;i<3;i++)

printf(\rade2,stu[n[i]].aver);

}

3. 有一个包括学生学号、姓名和三门课成绩的结构变量,要求在主函数中对该变量赋值,在另一个函数中将其值打印出来。

#include struct student {char num[10]; char name[20];

int grade1,grade2,grade3; }stu; main() {void p();

printf(\请输入学生的学号、姓名、成绩1、成绩2、成绩3:\

scanf(\ p(); }

void p()

{printf(\学号 姓名 成绩1 成绩2 成绩3\\n\

printf(\}

实验十三

1. 定义一个函数,求200~5000之间满足“用4除余1,用5除余3,用7除余4”的数,且一行打印6个。

#include void f(int n); main() {int n;

for(n=200;n<=5000;n++) f(n); }

void f(int n)

{static int p=0,m=0;

if(n%4==1 && n%5==3 && n%7==4) {p++;

printf(\ m=1; }

else m=0;

if(p%6==0&&m==1)printf(\}

2. 编写函数isprime( ),用来判断一个整形数a是否为素数,若是素数,函数返回1,否