來自剛剛進入打卡工作的落後者的練習題——04
又刷了三天的題,還是有好多過不去的,特在此讓學長學姐,大神們指點一下。
第一題:求整數段和。 給定兩個整數A和B,輸出從A到B的所有整數以及這些數的和。 輸入格式: 輸入在一行中給出2個整數A和B,其中−100≤A≤B≤100,其間以空格分隔。 輸出格式: 首先順序輸出從A到B的所有整數,每5個數字佔一行,每個數字佔5個字元寬度,向右對齊。最後在一行中按Sum = X的格式輸出全部數字的和X。 輸入樣例: -3 8 輸出樣例: -3 -2 -1 0 1 2 3 4 5 6 7 8 Sum = 30 接下來,就是氣skr人的程式,一直也解決不了。
#include <stdio.h> int main () { int x; int y; scanf ("%d",&x); scanf ("%d",&y); int count=0; int sum=0; int i; for (i=x;i<y+1;i++) { printf ("%5d",i); count++; sum+=i; if (count%5==0) { printf ("\n"); } } printf ("\n"); printf ("Sum = %d",sum); return 0; }
不知道到底是什麼毛病(但是,顯示的是格式錯誤),反正就是過不了
錯誤大概是這個樣子的
a.c: In function ‘main’: a.c:7:3: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result] scanf ("%d",&x); ^~~~~~~~~~~~~~~ a.c:8:3: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result] scanf ("%d",&y); ^~~~~~~~~~~~~~~
英語不好的我,看不太明白。希望這個是他系統的毛病。(即使我問了,但是有的學長仍然解決不了)
第二題:求素數(還是找個有含金量的問題吧) 題目概要: 本題的目標很簡單,就是判斷一個給定的正整數是否素數。 輸入格式: 輸入在第一行給出一個正整數N(≤ 10),隨後N行,每行給出一個小於231的需要判斷的正整數。 輸出格式: 對每個需要判斷的正整數,如果它是素數,則在一行中輸出Yes,否則輸出No。 輸入樣例: 2 11 111 輸出樣例: Yes No 然後,我的程式碼就編成了這個樣子
#include <stdio.h> int main () { int n; scanf ("%d",&n); int a[n]; int i; int j; for (i=0;i<n;i++) { scanf ("%d",&a[i]); } for (i=0;i<n;i++) { int isprime=1; for (j=2;j<a[i];j++) { if (a[i]%j==0||a[i]==4) { isprime=0; } } if (isprime==1) { printf ("Yes"); } else { printf ("No"); } if (i<n-1) { printf ("\n"); } } return 0; }
之後,就開始懷疑人生了。
問題是執行超時,但是,當前面加上#include <math.h>
然後後面用上i<sqrt(a[i])
的話,執行超時的問題是解決了,又出現了新的問題,運算錯誤,其實我也知道,這樣的話,4和9都是被歸為素數,但是,我忘記怎麼把這樣開方之後是素數的數排除了。
在這裡,學到了一些東西,在編寫程式時,能簡化就儘量簡化,用其他的標頭檔案能夠節省運算時間。
內容比較少,且都是問題,希望大佬們幫幫忙。