中方要做s=a+aa+aaa+aaaa+aa...a的值求總和,
美方要做a~aa…a中,能被3整除但不能被5整除的數共有幾個,
其中a是一個數字,用戶可指定幾位數的a 。例如輸入2 5,即計算2+22+222+2222+22222和2~22222之間。
最終用戶只會在一個程式內執行上述任一計算。
我的原始碼是這樣的
#include <stdio.h>
#include <math.h>
void main()
{
int s=0,a,i,n,m,k=0;
printf("請輸入a,n\n");
scanf("%d,%d",&a,&n);
if(a%2==0)/*如果輸入的a是偶數,則執行中方,否則執行美方*/
{
for(i=0;i<n;i++)
{
m=a*(int)pow(10.0,(double)i);
k+=m;
s+=k;
}
printf("中方的結果:%d\n",s);
}
else
{
for(i=0;i<n;i++)
{
m=a*(int)pow(10.0,(double)i);
k+=m;
}
int q=0;int c=a,b=k;
for(c;c<=b;c++)
{
if(c%3==0&&c%5!=0)
q++;
}
printf("美方的結果:%d",q);
}
}
需要改進什么地方呢
謝謝
uj5u.com熱心網友回復:
首先 scanf("%d,%d",&a,&n); 改成 scanf("%d%d",&a,&n); //注意輸入格式其次,if(a%2==0) 這個判斷中方美方是哪里來的要求?人家沒說用a來區分,所以你可以通過啟動引數來決定,或者再程式多加一個處理讓用戶輸入中方還是美方
另外,程式有沒有規定最大輸入?也就是保證不超過整形范圍?
uj5u.com熱心網友回復:
用a的奇偶來判斷中美不太妥,你這相當于就規定了一方必定不能用哪些數,但是題目只是說任意一方,沒有說數不能是那些,你可以int usr;printf(“請選擇中方美方\n”);printf("1:中方\n");printf("2:美方\n");printf("input:");scanf("%d",usr);switch(usr){case 1://中方;break;
case 2://美方;break;
default:printf("輸入有誤!");return 0;
}
還有考慮一下范圍,如果數最后太大那你的變數存不下
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/94481.html
標籤:C語言
下一篇:jpg圖片防篡改演算法
