假设
1)字符串中只包括'0'~'9',无其他字符,而且能够确保转换得到的整数在区间[0, 9999]之内。
2)字符串由键盘随机输入
//---------------------------------------------------------------------------
#include <stdio.h>
int main(void)
{
char a[80];
int b;
scanf("%s",a);//输入字符串
sscanf(a,"%d",&b);//从字符串a读取一个整数
printf("%d\n",b);//输出这个整数
return 0;
}
//---------------------------------------------------------------------------追问
那这道题呢:
假如数组中存储有某班C语言期末成绩(百分制)。请编程输出
1)该班成绩的平均分(两位小数)
2)不及格的下标和成绩,不及格总人数
3)高于90分的下标和成绩,高于90分的总人数
4)班内有大约30人,具体人数自定
5)成绩以初始化方式输入到数组中
很简单,用循环就可以办到,建议不要到这里来找作业答案,这么简单的问题,应该自己完成。
追问好吧,谢谢你,我只是刚学,还没觉得很简单,我会努力的。
追答第二题的程序:
//---------------------------------------------------------------------------
#include
int main(void)
{
double ave=0,sco[5]={92,73.89,58,97.6,53.8};//sco数组用于保存每位学生的成绩,这里共有5位学生
int i,cnt;
for (i = 0; i90:"); //3)高于90分的下标和成绩,高于90分的总人数
for (cnt=i = 0; i90) {
printf("Index:%d\t\t score:%g\n",i,sco[i]);
++cnt;
}
}
printf("total: %d\n\n",cnt);
return 0;
}
//---------------------------------------------------------------------------
int main(){
char a[10000];
int num=0,i=0;//num用来保存结果,i表示数组下标
gets(a);//接收字符串到数组a的库函数
while(a[i]!='\0'){//字符串结束符'\0'
num=num*10+(a[i]-48);//48是0的asc码值,字符在进行运算时是用它的asc码来计算的
i++;
}
printf("%d",num);
while(1);
return 0;
}
我运行了一下,是可以的。希望对你有所帮助。追问
这个,是整数123那道题吗?
#include<string.h>
#include<stdlib.h>
void main()
{
int i;
char ch[20];
aa: printf("请输入:");
gets(ch);
for(i=0;i<strlen(ch);i++)
{
if(ch[i]<'0' || ch[i]>'9')
break;
}
if(i < strlen(ch))
{
printf("输入只能为数字\n");
goto aa;
}
else
i = atoi(ch);
printf("%d\n",i);
}
用到一个stdlib.h头文件的atoi方法就行了
char a[];
int i,s=0;
gets(a);
for(i=0:a[i]!=0:i++)
s=10*s+a[i]-'0';
printf("%d",s):}
追问
第二题的这三问都可以在那个程序里实现吗?