C语言编程题 帮我检查下程序
/*程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个字符,再输入一个以回车结束的字符串(少于80个字符),在字符串中查找该字符,如果找到,输出该字符在字符串中所对应的最大下标 (下标从0开始);否则输出"Not Found"。
输入输出示例:括号内为说明
输入:
2 (repeat=2)
m (字符'm')
programming (字符串"programming")
a (字符'a')
1234 (字符串"1234")
输出:
index = 7 ('m'在"programming"中对应的最大下标是7)
Not Found ("1234"中没有'a')
*/
#include "stdio.h"
#define MAXLEN 80
int main(void)
{
char cc, ch;
char str[MAXLEN];
int count, flag, i, index;
int repeat, ri;
scanf("%d", &repeat);
getchar();
for(ri = 1; ri <= repeat; ri++){
cc = getchar();
getchar();
i = 0;
while((ch = getchar()) != '\n'){
str[i++] = ch;
}
str[i] = 0;
count=i;
flag=0;
for(i=0;i<count-1;i++)
if(str[i]==cc){
index=i;
flag=1;
}
if(flag != 0)
printf("index = %d\n", index);
else
printf("Not Found\n");
}
}
追问:我是想看看我的哪里不对了
答案:是类型转换的问题 或者把c,d定义成float 或者把输出变成%d,%d就OK 了
#include<stdio.h>
main()
{
int a;
int b;
float c;
float d;
printf("请输入两个整数 中间以空格隔开:\n");
scanf("%d %d",&a,&b);
c = a / b;
d = a % b;
printf("它们的商是%f,余数是%f\n",c,d);
}
你再试试看
其他:#include <iostream.h>
#include<string.h>
#include<stdio.h>
int main()
{
char cc;
char str[100];
int count, flag, i, index ,repeat;
scanf("%d", &repeat);
while(repeat--)
{ cin>>cc;
cin>>str;
count=strlen(str);
flag=0;
for(i=0;i<count;i++)
if(str[i]==cc)
{
index=i;
flag=1;
}
if(flag != 0)
printf("index = %d\n", index);
else
printf("Not Found\n");
}
return 0;
}
不知道为什么我用C的输入法、、输不进去
我换了C++就可以了! 我只说你的错误,错误有2点
1)
or(i=0;i<count;i++) //此处是 i<count
if(str[i]==cc){
index=i;
flag=1;
}
2)看题目是让你全部输入完毕后,才把结果全部输出来,你的程序是输入一次,输出一次结果
要改成定义一个10元素的数组,把结果先保存起来,最后再输出。可以用 -1表示没有。
定义 int result[10];
if(flag != 0) result[ri-1]=index; //因为你 ri 是用 1开始循环的,所以此处用 ri-1
else result[ri-1]=-1;
最后
for(ri=0;ri<repeat;ri++)
if(result[ri]>=0)
printf("index = %d\n", result[ri]);
else
printf("Not Found\n"); for(i=0;i<count-1;i++)改为
for(i=0;i<count;i++) 首先,最明显但不重要的一个错误:str[i]应给其赋值为'\0',而不是数字0,它是作为字符串结束标志输入的。
然后,你测试一下这组数据:
m
fjslhfm
也就是字符在字符串末尾的情况:
结果是not found
实际应该是index=6
原因是:for(i=0;i<count-1;i++)
你改为for(i=0;i<count;i++)
不必用count-1,因为你的 i 本身就是数组下标,而count=i;所以count也是数组下标,是从零开始计算的。若你用了count-1,上面那个例子中i=7,count=6只能循环到第str[5],对于处于str[6]的m自然就计算不到了,就出现错误了。
上一个:计算机二级C语言考试的南开百题是历年真题吗?还有公共基础知识、笔试、上机什么关系呢?谢谢各位了!!!
下一个:谁能提供C语言的哈弗曼压缩算法