新手求教C语言

输入一定范围内的字符测试还是可以实现的,但是只要超出某个范围,程序就这样中断,重新运行输入初始范围内的字符串就不行了,还是报错,这是为啥吗,怎么解决啊啊。

#include<stdio.h>
#include<string.h>
#define MAX 1000

int prepare_key(char *key);

int main()
{
	char key[MAX];
	
	printf("please input key:\n");
	if (scanf("%s", key) == 1)
	{
		printf("key=%s\n",key);
	}
	
	prepare_key(key);
	printf("%s", key);
}

int prepare_key(char* key)
{
	int i, j;
	char* p = key,*q=key;
	char biao[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	char* s = biao;

	//升为大写字母	
	strupr(key);

	//去除重复字母	key={aiai}
		//置空格  
	for (i=0;i<strlen(key);i++)
	{
		for (j=1; j < strlen(key) - i+1; j++)
		{
			if (*(p + i) == *(p + i + j))
			{
				*(p + i + j) = ' ';
			}
		}
	}
		//去空格
	//为啥一会儿行一会儿不行啊???

	for (i = 0; i<strlen(key); i++)
	{
		q = strchr(key,' ');
		strcpy(q, q + 1);
	}
	//生成密码字母
/*	while(*p++!=NULL)
	{
		s=strchr(biao,*p);
		strcpy(s, s + 1);
	}

	strcat(key, biao);*/
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一道经典的算法题,可以使用循环和数组来实现。具体思路如下: 1. 首先,定义一个二维数组 `score`,其中第一维表示选手编号,第二维表示评委编号,用来存储每个选手每个评委的得分; 2. 然后,使用循环嵌套遍历所有的选手和评委,接收用户输入每个评委给每个选手的得分,并将其存储到数组中; 3. 在输入完成后,遍历所有的选手,计算其总分和平均分,并输出结果。 以下是示例代码: ```c #include <stdio.h> int main() { int score[10][10]; // 定义二维数组存储分数 int i, j, sum, avg; // 接收用户输入每个评委给每个选手的得分 for (i = 0; i < 10; i++) { // 遍历所有选手 printf("请输入第%d个选手的分数:\n", i + 1); for (j = 0; j < 10; j++) { // 遍历所有评委 printf("请输入第%d个评委的分数:", j + 1); scanf("%d", &score[i][j]); // 存储分数 } } // 计算每个选手的总分和平均分,并输出结果 for (i = 0; i < 10; i++) { // 遍历所有选手 sum = 0; for (j = 0; j < 10; j++) { // 遍历所有评委 sum += score[i][j]; // 累加分数 } avg = sum / 10; // 计算平均分 printf("第%d个选手的总分为%d,平均分为%d。\n", i + 1, sum, avg); } return 0; } ``` 在这个示例代码中,使用了二维数组 `score` 来存储分数。首先使用两层循环遍历所有的选手和评委,接收用户输入得分并存储到数组中。然后再使用两层循环遍历所有的选手和评委,累加分数并计算平均分,最后输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值