#include <stdioh>
int main (void)
{
int m,n,x;
int is(int, int);
printf("enter m(m>=1):");
scanf("%d",&m);
printf("enter n(n<=1000>:");
scanf("%d",&n);
x=is(m, n);
return 0;
}
int is(int m, int n)
{
int digit, sum,i,result,number;
for(i=m;i<=n;i++)
{
number=i;
sum=0;
while(number!=0){
digit=number%10;
number=number/10;
sum=sum+digitdigitdigit;
}
if(sum==i){
result=i;
printf("%d\n",i);
}
}
return result;
}
#include<stdioh>
int main()
{
//int search(int list,int n,int x);
int search(int list,int n,int x);
int a[10],n,x,i;
printf("Input n:");
scanf("%d",&n);
printf("Input %d integers:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("Input x:");
scanf("%d",&x);
if(search(a,n,x)==-1)
printf("Not found\n");
else
printf("Index=%d\n",search(a,n,x));
return 0;
}
int search(int list,int n,int x)
{
int i;
for(i=0;i<n;i++)
{
if(list[i]==x)
return i;
}
return -1;
}
看来 调用函数不会写啊 !
那是因为这是c++语言,不是java语言。你在调用之前没有定义Menu方法的时候,他是不找不到Menu的方法的,所以你把Menu方法放在InputStuInfo()之前就行了,这样就可以找到定义了。
下面是修改后的
#include<iostream>
#include<string>
using namespace std;
class Student
{
private:
string sStuNo;
string sStuName;
int iStuAge;
public:
Student(string no,string name,int age);
void OutputStuInfo();
void InputStuInfo();
Student();
~Student();
};
Student stu;
void NewStudent()
{
string No,Name;
int Age=0;
cout<<"请输入学号:";
cin>>No;
cout<<"请输入姓名:";
cin>>Name;
cout<<"请输入年龄:";
cin>>Age;
Student stu2(No,Name,Age);
}
void Menu()
{
system("cls");
int iChoose=0;
cout<<"功能列表: 1使用成员函数输入学生信息 2使用成员函数输出学生信息"<<endl;
cout<<" 3使用构造函数输出学生信息并使用析构函数输出学生信息 4退出"<<endl;
cout<<"请选择要使用的功能:";
cin>>iChoose;
switch(iChoose)
{
case 1:stuInputStuInfo();
break;
case 2:stuOutputStuInfo();
break;
case 3:NewStudent();
break;
case 4:return;
default:Menu();
}
}
void Student::InputStuInfo()
{
cout<<"请输入学号:";
cin>>sStuNo;
cout<<"请输入姓名:";
cin>>sStuName;
cout<<"请输入年龄:";
cin>>iStuAge;
system("pause");
Menu();
}
void Student::OutputStuInfo()
{
cout<<"使用成员函数输出:"<<endl;
cout<<"学生学号:"<<sStuNo<<endl;
cout<<"学生姓名:"<<sStuName<<endl;
cout<<"学生年龄:"<<iStuAge<<endl;
system("pause");
Menu();
}
Student::Student()
{
sStuNo="没有信息";
sStuName="没有信息";
iStuAge=0;
}
Student::~Student()
{
cout<<"使用析构函数输出:"<<endl;
cout<<"学生学号:"<<sStuNo<<endl;
cout<<"学生姓名:"<<sStuName<<endl;
cout<<"学生年龄:"<<iStuAge<<endl;
system("pause");
Menu();
}
Student::Student(string no,string name,int age)
{
sStuNo=no;
sStuName=name;
}
void main()
{
Menu();
}
首先我指出你书写的一个错误。switch(c-'2')下面那行的(
应该改成{
因为{是与default:putchar(c+2);下面出现的}进行配对的。
依次输入2473得到输出668977,只需修改一处地方。在case
2:putchar(c+4);后面加上
break;
分析如下:使用getchar输入,每次只能识别一个字符,而又使用了while循环,输入2473就相当于输入了4个数,while每次识别一个。
先分析输入2的情况:这里的2是字符'2',执行switch(c-'2'),‘2’-‘2’=0;因此要执行case
0的情况,case
0
和case
1
共用putchar(c+4),故2+4=6,要输出6,记住:输出的这个6其实是字符‘6’。然后继续执行case
2:putchar(c+4);输出第二个‘6’。这时后面加上了break;即跳出本层switch,本次while循环执行完毕。第一次循环完毕,输出了:66
然后是输入为4的情况:执行switch(c-'2'),‘4’-‘2’=2;所以执行case
2:putchar(c+4);即4+4=8,输出一个8(字符‘8’)。继续执行break;跳出本层switch,本次while循环执行完毕。第二次循环完毕,输出了:8
继续输入为7的情况:执行switch(c-'2'),‘7’-‘2’=5;要执行case
5,但本程序中并没有case
5,故执行缺省情况
default:putchar(c+2);‘7’+‘2’=‘9’,因此输出9(字符‘9’)。本次while循环执行完毕。第三次循环完毕,输出了:9
最后一个输入数3的情况:执行switch(c-'2'),‘3’-‘2’=1;所以执行
case
1:putchar(c+4);即‘3’+‘4’=‘7’,输出7(字符‘7’)。继续执行case
2:putchar(c+4);又输出了一个7(字符‘7’)。遇到后面的break;跳出switch,本次while循环结束。第四次循环结束,输出了:77
至此,全部四次循环均结束,所以最后的输出是668977
以上就是关于c语言源程序改错(在线等)全部的内容,包括:c语言源程序改错(在线等)、C语言程序改错。、C++源程序改错等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)