求各位编程高手帮忙解答,帮我看看哪里错了,该怎么改正

作者&投稿:衡童 (若有异议请与网页底部的电邮联系)
C++编程上的问题,哪位高手谁能帮帮我看看哪里错了,帮忙改一下...~

程序修改完毕,都是些小错误,调试运行通过:
#define P 0.0012
#include
using namespace std;

int main()
{
char a;
cout<<"请输入卡号:"<<endl;
cin>>a;

char b;
cout<<"请输入您的姓名:"<<endl;
cin>>b;

char c;
cout<<"请输入您的身份证号:"<<endl;
cin>>c;
cout<<"欢迎你,"<<b<<"女士/先生"<<"您的卡号是"<<a<<"您的身份证号是"<<c<<endl;

float e,f,s;
cout<<"请输入定期存款金额和存款年限:"<<endl;
cin>>e>>f;
s=e*f*P;
cout<<endl;
cout<<"存款到期时,你账号金额将是:"<<s<<endl;

return 0;
}

① 倒填 ② 蛇形填数 ③ 回转填数 这个你应该看的懂吧
你在表中从1数到25就知道怎么填的了
然后再看程序 应该很简单的啊 你得把程序循环得层次弄清楚
例如③ 回转填数

int i,j,k=1,m,mi,mj,a[NUM][NUM],ind[4]={NUM-1,NUM-1,0,1}; /*i为行号,j为列号,k当前填的数,数组ind[4]在回转填数中控制圈数*/
/*cycle*/
printf("cycle:
");
k=1;i=0;j=0;
while(ind[0]>=ind[2]) /*控制数组填数循环,ind[0]>=ind[2]表示到达最里边一圈,即结束填数*/
{while(i<=ind[0]) /*第一列填k=1到5,i为行号,j为列号=0*/
{a[i][j]=k;i++;k++;}
ind[0]--;i--;j++; /*ind[0]--后为3,表示填数i在上边循环结束后为5故减i--,j++为下边从第二列开始填数做准备*/
while(j<=ind[1]) /*此时i=4,j=1,第5行第2列开始填k=6到9*/ {a[i][j]=k;j++;k++;}
ind[1]--;j--;i--; /*ind[1]=3,j=4,i=4*/
while(i>=ind[2]) /*此时i=3,j=4,第4行第5列开始填k=10到13*/
{a[i][j]=k;i--;k++;}
ind[2]++;i++;j--; /*ind[2]=1表示第一圈结束*/
while(j>=ind[3])
{a[i][j]=k;j--;k++;}
ind[3]++;j++;i++;}
for(i=0;i<NUM;i++) /*输出数组*/
for(j=0;j<NUM;j++)
{printf("%4d",a[i][j]);
if(j==NUM-1) printf("
");}
printf("
");
getch();
}

没注释的以此类推啊 差不多了

  1. C语言的数组是静态分配的,即在程序运行前就要分配好。因此C语言不允许使用 int a[n];这样的定义,因为n是未知的,C语言的数组定义中,元素个数必须是“常量表达式”,这点你要注意了。

  2. 如果你非要进行动态分配,可以使用指针,即:

    int *a;

    scanf("%d",&n);

    a=(int*)malloc(n*sizeof(int));   //如果是C++环境,可以简化为a=new int[n];

  3. 如果是C++环境,你程序中的前三行顺序是可以的,但是如果是标准C(如TC)的话,函数的变量定义只能在第一行执行代码之前定义,如:

    int n,i,j;

    int *a;

    scanf("%d",&n);

    a=(int*)malloc(n*sizeof(int));

     

    在标准C下,这样的定义是错误的:

     

    int n,i,j;

    scanf("%d",&n);

    int *a;   //不符合变量定义规则

    a=(int*)malloc(n*sizeof(int));

  4. 如果要用动态分配,你的程序最前面应该加上一行头文件包含:

    #include <malloc.h>

  5. 你的程序中的代码过于繁琐了,可以使用C的“往下掉”的特点,使程序变得简单:

    switch(j)

    {

     case 0:case 1:case 2:case 3:case 4:case 5:printf("E");break;

     case 6:printf("D");break;

     ...

     case 9:case 10: printf("A");break;

     defalut:printf("ERROR SCORE SCOPE!");

    }



建议修改程序为:
#include<stdio.h>
#include<malloc.h>
void main()
{ int n,i,j,*a;
scanf("%d",&n);
a=(int *)malloc(sizeof(int)*n); //申请数组内存
if ( a ) //如果申请成功
{ for ( i=0;i<n;i++ )
{ scanf("%d",a+i);
j=a[i]/10;
switch ( j )
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5: printf("E"); break;
case 6: printf("D"); break;
case 7: printf("C"); break;
case 8: printf("B"); break;
case 9:
case 10: printf("A"); break;
}
}
free(a); //释放申请的内存
}
}
其中的判断也可以用条件来写:
在程序开始定义个字符变量c
c='E';
if ( a[i]>=90 ) c='A';
else if ( a[i]>=80 ) c='B';
else if ( a[i]>=70 ) c='C';
else if ( a[i]>=60 ) c='D';
printf("%c",c);

int a[n];
这里有问题,楼主你不能用一个变量来声明数组的长度。
你应该用一个常量或者像下面这样做:
int *a = new int[n];

你好!!

篮圈的地方,a[i]/10,不是除,应该是取余数,改成:a[i] % 10



int a[n] 改为 int *a = new int[n]


[急求助]C语言程序编程题,请高手帮忙解答下。!
只要输入一行就行了:include<stdio.h> include<math.h> void fun(int a,int b,long c){ c=a%10*100+a\/10+b\/10*1000+b%10*10;\/*解释:a%10的意思是a除以10剩下的余数,即a的个位数,若a是45,a%10就是5,再乘以100即是500;a\/10就是十位数,即4,原因是它是向下取整,45\/10虽...

lingo软件编程,高手帮帮忙!
【所有代码都是原创的,大概花了我一个上午才帮你解出来的。这个题目虽然不是太难,但是数据有些繁琐。集合声明比较多,维度不一。希望能够帮上你的忙。】程序部分:MODEL: SETS: program\/1..4\/;!定义四个项目; factory\/1,2\/:totaltime;!定义两个车间,注意:本程序中,我们约定q开头代表数量,c开头代表成本; ...

求编程高手来解
先将两个数组进行排序,从小到大。然后按从小到大分别取鸡蛋数组中的数,取出一个数后,再从盾牌数组中从小到大,直到找到一个比鸡蛋数稍大的数,则配对一对成功,此是能得200分的数组,如果能找到相等的数也算配对成功,此为不加也不减分的数组,一组一组的配,对于配成功的盾牌则标记为成功,...

下面是我在书上看到的一段程序,有几句不懂,请C++高手们帮忙解答一下...
ch1=cin.get(); \/\/作用是什么?ch1=cin.get(); \/\/作用是什么? 是指从输入 流中取一个字符 , cin.read(str,9); 取9个字符,到 str中,str当然可以接着用。 str[10] 最后一个字符是字串结束符 0,因此只能输入 9个字符。

java题目,请高手帮忙解决。
面向对象:其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心以算法为驱动的话,面向对象的编程语言则是以对象为中心以消息为驱动。用...

?+??+???=??? 求助编程高手!!
我随便说两个楼上就没有包括 2+86+947=1035 5+78+943=1026 下面是符合题意的全解 2+46+987=1035 2+47+986=1035 2+64+987=1053 2+67+984=1053 2+84+967=1053 2+86+947=1035 2+87+946=1035 2+87+964=1053 3+45+978=1026 3+48+975=1026 3+74+985=1062 3+75+948=1026 3+...

...现在遇到了两个问题不能解决,希望各位高手可以帮忙解决。_百度...
需要定义一个变量ComputYN,用于判断当a、b、c、d 改变时是否需要计算。这里又定义了两个文本框:TextX、TextY,用于存放你计算出来的x、y,也可根据自己的需要做其它处理。程序启动时进入密码校验程序,这里的密码为“123”,可根据需要设置 Private ComputYN As Boolean Private Sub Form_Load()Comput...

请编程高手帮我解决下这个问题
找不到secondchar的定义,你是否没有把包含secondchar的*.h或*.lib加入到你项目?以下是可能产生LNK2001错误的原因:一.由于编码错误导致的LNK2001。1.不相匹配的程序代码或模块定义(.DEF)文件能导致LNK2001。例如, 如果在C++ 源文件内声明了一变量“var1”,却试图在另一文件内以变量“VAR...

C语言编程问题 求高手解答
程序运行输入65回车后,不会输出结果 因为,scanf("%c",&c1);要求以字符的形式输出进去,输入65的时候,c1接收的是字符6 接下来,while后的条件表达式的值为逻辑真,会让你继续输入,直到输入大写字母的时候,才会结束 输出大写字母的大写形式,小写形式 ...

一道C语言编程问题,高手们来看看帮忙解答下
先推算公式,C^2*(A^2+B^2),= (A^2*B^2),程序就是找寻能让公式左右相等的ABC的值,且0<c<b<a<100.include <stdio.h> int main(){ int a;\/\/定义循环变量。int b;int c;int sum;\/\/ABC之和。for (a = 100;a > 0;a--)\/\/以A为循环变量,在1到100之间。{ for (b = ...

甘南藏族自治州15733269073: 求各位编程高手帮忙解答,帮我看看哪里错了,该怎么改正 -
程尝伊泰: 建议修改程序为:#include<stdio.h>#include<malloc.h>void main(){ int n,i,j,*a; scanf("%d",&n); a=(int *)malloc(sizeof(int)*n); //申请数组内存 if ( a ) //如果申请成功 { for ( i=0;i<n;i++ ) { scanf("%d",a+i); j=a[i]/10; switch ( j ) { case 0: case 1: case...

甘南藏族自治州15733269073: 如果是高手,请进.帮我看看.提些意见,谢谢各位编程高手,我要学编
程尝伊泰: 首先,英语不好的不会有什么太大影响的 其次,要学习哪个方面,要看你对哪个方面有兴趣,还有以后哪个方面用的多一些,或者以后的就业情况了. 最后,一份付出一份回报,祝你早日成功吧~

甘南藏族自治州15733269073: 请各位编程高手帮我看一下下面哪这些代码错在哪?求求了哪位大哥哥大姐姐帮帮忙谢谢了! -
程尝伊泰: 从这里看,错的地方很多.有IF没END的地方就有两处.

甘南藏族自治州15733269073: c语言 程序 请高手帮忙看看错在哪里? -
程尝伊泰: void paixu(char(*p)[30]){ int i,j,k; char q[30];// 注意这里,必须有临时存储空间 for(i=0;i<3;i++) // 注意这里,数量必须和你传入的数组大小一致,你可...

甘南藏族自治州15733269073: 编程的高手们,请进.帮我看看.提些意见,谢谢谢谢谢谢谢各位了我是
程尝伊泰: 学习编程技术,先从简单的开始,建议你先学C++或VF,C++的代码全部用手写,VF是全窗口界面,相对要简单一些.

甘南藏族自治州15733269073: 各位c语言高手帮我解决下这个问题看看我哪里编错了,谢谢了~~
程尝伊泰:#include"stdio.h"main(){char a[100],b[50],ch; int i=0; printf("input string1:\n"); while((ch=getchar())!='\n') { a[i]=ch;i++; } a[i]='\0'; printf("input string2:\n"); i=0; while((ch=getchar())!='\n') { b[i]=ch;i++; } b[i]='\0'; for(i=0;a[i]!='\0'&&b[i]!='\0';i++) { if(a[i...

甘南藏族自治州15733269073: 请编程高手帮忙看看,下面代码哪一段是控制时间的,帮我把时间改成一秒<DIV style="WIDTH: 750px; HEIGHT: -
程尝伊泰: 估计没有,最起码是个数值吧,只有2个数字,但不是控制时间的.应该在js代码内.说说你这是要达到什...

甘南藏族自治州15733269073: 请C语言编程高手帮忙帮我看看下面的题目 -
程尝伊泰: ① 倒填 ② 蛇形填数 ③ 回转填数 这个你应该看的懂吧你在表中从1数到25就知道怎么填的了 然后再看程序 应该很简单的啊 你得把程序循环得层次弄清楚例如③ 回转填数int i,j,k=1,m,mi,mj,a[NUM][NUM],ind[4]={NUM-1,NUM-1,0,1}; /*i为行号,j为...

甘南藏族自治州15733269073: 求助!!各位编程高手看看!!!! -
程尝伊泰: Private Sub Command1_Click()Dim a As Long, b As Long, c As Long, t As Longa = Val(Text1.Text)b = Val(Text2.Text)c = Val(Text3.Text)If a < b Then'如果a小于b就把a和b的值交换,使a的值大于或等于bt = aa = bb = tEnd IfIf a < c ...

甘南藏族自治州15733269073: 求编程高手帮我看看这个错在哪里?
程尝伊泰: ";"没有? 双引号看起来有问题 printf("请输入圆的半径:"); 哥们偶不懂你的意思,我是从c和c++的观点去看你发出的这条代码!----欢迎加入------c++部落------------Hello Word!-------- 无论你是初学者还是专家,只要你热爱编程、交流、分享,c++部落因为你而精彩~

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网