C语言程序设计-指针与结构体应用

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;
} 

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值