c语言源程序改错(在线等)

c语言源程序改错(在线等),第1张

#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++源程序改错等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10112255.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存