1.编写一个自定义函数,其功能是实现与系统函数strlen类似的功能,急求一个字符串的长度,主函数负责输入一个字符串,并调用自定义函数计算字符串的长度并输出。
【要求】程序中必须使用指针变量。
【输入/输出】请输入一个字符串:abcd87*b?
字符串”abcd87*b?”的长度为:9
#include <stdio.h>
int length(char *p)
{
int n=0,i;
for(i=0;i<10000;i++)
{
if(*(p+i)=='\0')
break;
else
n++;
}
return n;
}
int main()
{
char *p,a[10000];
printf("请输入一个字符串:");
scanf("%s",a);
p=a;
printf("字符串\"%s\"的长度为:%d",p,length(p));
return 0;
}
2.编写自定义函数,用于对数组首地址作参数的对应数组中的元素求平均值,函数以指针方式进行处理,平均值为函数的返回值。主函数负责定义并输入10个实型数组元素,然后调用自定义函数得到这10个数组元素的平均值并输出(结果保留两位小数)。
【要求】程序中必须使用指针变量。
【输入/输出】请输入10个实数:1.2 3.44 6.63 7.126 9.62 11.33 4.75 9.11 8.457 6.332
ave=6.80
#include <stdio.h>
float AVE(float *p,int n)
{
float sum,ave;
int i;
for(i=0;i<n;i++,p++)
sum+=*p;
ave=sum/10;
return ave;
}
int main()
{
int i,n=10;
float *p,a[10],ave;
printf("请输入10个实数:");
for(i=0;i<10;i++)
scanf("%f",&a[i]);
p=a;
ave=AVE(p,n);
printf("ave=%.2f",ave);
return 0;
}
3.有五个学生,每个学生都有三门课的成绩,从键盘输入以上数据(包括学号、姓名、三门课、成绩),计算出每个学生的总成绩,并按照表格结构输出所有学生的信息(包括学号、姓名、三门课、成绩、总成绩)。
【要求】使用结构体类型存放学生信息(包括学号、姓名、三门课、成绩、总成绩)。
【输入/输出】130001 zhang 89 76 88
130002 wang 78 69 70
130003 li 66 50 47
130004 zhao 87 75 90
130005 sun 74 82 91
--------------------成绩表--------------------
学号 姓名 数学 语文 英语 总分
130001 zhang 89 76 88 253
130002 wang 78 69 70 217
130003 li 66 50 47 163
130004 zhao 87 75 90 252
130005 sun 74 82 91 247
#include <stdio.h>
struct
{
int mun;
char name[10];
int score[3];
int total;
}student[5];
int main()
{
int i,j;
printf("请输入5个学生的学号、姓名、三门课成绩:\n");
for(i=0;i<5;i++)
{
scanf("%d%s",&student[i].mun,&student[i].name);
for(j=0;j<3;j++)
{
scanf("%d",&student[i].score[j]);
student[i].total+=student[i].score[j];
}
}
printf("--------------------成绩表--------------------\n");
printf("学号\t姓名\t数学\t语文\t英语\t总分\n");
for(i=0;i<5;i++)
{
printf("%d\t%s\t",student[i].mun,student[i].name);
for(j=0;j<3;j++)
printf("%d\t",student[i].score[j]);
printf("%d\n",student[i].total);
}
return 0;
}
4.某单位进行先进个人选举,由五位候选人:zhang、wang、li、zhao、liu,五人参与投票,编写统计每位候选人得票数的程序,输出每位候选人得票数以及得票数最高的候选人姓名。
【要求】每位候选人的信息使用结构体类型表示三位候选人的信息可使用结构体数组
【输入/输出】请输入20个选票(zhang,wang,li,zhao,liu):
zhang liu li liu zhao
li zhao zhang wang wang
zhao liu li wang zhang
liu li zhao wang liu
-------候选人得票统计表-------
姓名 得票
zhang 3
wang 4
li 4
zhao 4
liu 5
得票数最高的候选人是:liu
#include <stdio.h>
#include <string.h>
struct
{
char name[10];
int ticket;
}person[5]={{"zhang",0},{"wang",0},{"li",0},{"zhao",0},{"liu",0}};
int main()
{
int i,j,pos;
char a[20][10];
printf("请输入20个选票(zhang,wang,li,zhao,liu):\n");
for(i=0;i<20;i++)
{
scanf("%s",&a[i]);
if(strcmp(a[i],"zhang")==0)
person[0].ticket++;
else if(strcmp(a[i],"wang")==0)
person[1].ticket++;
else if(strcmp(a[i],"li")==0)
person[2].ticket++;
else if(strcmp(a[i],"zhao")==0)
person[3].ticket++;
else
person[4].ticket++;
}
printf("-------候选人得票统计表-------\n");
printf("\t姓名\t得票数\n");
for(i=0,j=0;i<5;i++)
{
printf("\t%s\t%d\n",person[i].name,person[i].ticket);
if(person[i].ticket>j)
{
j=i;
pos=i;
}
}
printf("得票数最高的候选人是:%s",person[pos].name);
return 0;
}