//第一题
#include <stdio.h>
#include <string.h>
#include<math.h>
int zhuanhuan(char s[]); //将字符串 转换成一个 整数
void main()
{
char s[5];
printf("请输入0-9999个数\n");
gets(s);
while(1) //判断是否输入正确
{
int p=0; //用作哨兵值
int i=0; //用做循环计数器
int si=strlen(s); // 字符串的长度
while(strlen(s)>=5) //判断 位数 是否输入正确 如果不正确 就从新输入 并且 哨兵值 ++
{
printf("输入错误请重新输入\n");
gets(s);
p++;
}
while(i<si) //判断字符串中是否都是数字 如果不是 就从新输入 并且哨兵值 ++
{
if(s[i]>=45&&s[i]<=57) //用ASCII码判断
{
i++;
}
else
{
printf("您输入的不是数字 请重新输入\n");
gets(s);
p++;
}
}
if(0==p) //如果 哨兵值为0 就表示 这个字符串 两个条件都满足 就可以 退出了 否则 一直 循环
{
break;
}
}
printf("转换后的数字为 %d\n",zhuanhuan(s));
}
int zhuanhuan(char s[])
{
int Slength=strlen(s); //确定 字符串的长度 为了if循环用
int SL=Slength-1; //表示 这个数值最大的一位 是哪一位
int i=0;
int sum=0; // 存储 转换后的数字
for(;i<Slength;i++)
{
sum=sum+(s[i]-48)*pow(10,SL);
SL--;
}
return sum; //返回 转换后的数字
}
//第二题
#include<stdio.h>
#include <stdlib.h>
#include<time.h>
void main()
{
srand(unsigned int(time(NULL))); //这个 你不用管 这是初始化 一个随机数
int fenshu[30]; //数组的大小
int i=0; //用做循环的计数器
double averages; //存储平均数
double sum=0; //存储分数总和
int FailNumber=0; //存储不及格的人数
int GoodNumber=0; //存储优秀的人数
for(i;i<30;i++)
{
fenshu[i]=rand()%100+1; //将0到100 分别随机的存储在数组中 PS: 打30个数 太累了 所以就随机出来一个 初学者 不用关心 如果 想知道 HI 我
}
i=0;
printf("数组中的数据为 \n"); //打印数组中的数据
for(i;i<30;i++)
{
printf("%d ",fenshu[i]);
}
printf("\n");
i=0;
for(i;i<30;i++) //循环数组 求出数组的总和
{
sum=sum+fenshu[i];
}
averages=sum/i;
printf("平均数为%.2f\n",averages); //输出平均数
i=0;
for (i;i<30;i++) //循环数组 判断 不及格 和 优秀
{
if(fenshu[i]<60)
{
printf("不及格的下标为: %d 分数为: %d \n",i,fenshu[i]);
FailNumber++; //不及格人数++
}
else if(fenshu[i]>=90)
{
printf("优秀的下标为: %d 分数为: %d \n",i,fenshu[i]);
GoodNumber++; //优秀人数++
}
}
printf("不及格的人数为: %d\n",FailNumber); //输出 不及格人数
printf("优秀的人数为: %d\n",GoodNumber); //输出 优秀人数
}
不懂的HI 我
追问恩恩 谢谢 懂得