本次單元測試雖然較第一次機測難度增加,但整體難度與平時pta練習相比,難度并不大,一些細節(jié)同學(xué)們在考試時容易忽略,本次八道題,可關(guān)注第四題的簡便公式,以及第七題的注意事項和第八題運行超時的解決辦法。
7-1 sdut-C語言實驗-A+B for Input-Output Practice (不確定次數(shù)循環(huán))
分數(shù) 10
作者 馬新娟
單位 山東理工大學(xué)
Your task is to Calculate a + b.
Too easy?! Of course! I specially designed the problem for acm beginners.
You must have found that some problems have the same titles with this one, yes, all these problems were designed for the same aim.
輸入格式:
The input will consist of a series of pairs of integers a and b, separated by a space, one pair of integers per line.
輸出格式:
For each pair of input integers a and b you should output the sum of a and b in one line, and with one line of output for each line in input.
輸入樣例:
1 5
10 20
輸出樣例:
在這里給出相應(yīng)的輸出。例如:
6
30
代碼長度限制
16 KB
時間限制
400 ms
內(nèi)存限制
64 MB
此題為為循環(huán)題最最最基礎(chǔ)題,不過多贅述。
#include<stdio.h>
int main()
{
int a,b;
while(scanf("%d %d\n",&a,&b)!=EOF)
{
printf("%d\n",a+b);
}
return 0;
}
7-2 sdut-C語言實驗-數(shù)位數(shù)
分數(shù) 12
作者 馬新娟
單位 山東理工大學(xué)
給定一個正整數(shù) n ,請你求出它的位數(shù)。
輸入格式:
單組輸入,輸入一個整數(shù) n 。(1<= n <= 2147483647)
輸出格式:
輸出一行,包含一個整數(shù),即為 n 的位數(shù)。
輸入樣例:
1234567
輸出樣例:
在這里給出相應(yīng)的輸出。例如:
7
代碼長度限制
16 KB
時間限制
400 ms
內(nèi)存限制
64 MB
此題仍為for循環(huán)最基本題型,
不過多贅述。
#include<stdio.h>
int main()
{
int a=0,n;
scanf("%d",&n);
while(n>0)
{
n=n/10;
a++;
}
printf("%d",a);
return 0;
}
7-3 sdut-C語言實驗- 分段函數(shù)求值
分數(shù) 13
作者 馬新娟
單位 山東理工大學(xué)
有如下分段函數(shù)
F(x) = x^2 + 1 當x> 0時;
F(x) = -x 當x<0時;
F(x) = 100.0 當x=0時;
編程根據(jù)輸入的不同x(x為實數(shù)),輸出其對應(yīng)的函數(shù)值。
輸入格式:
多組輸入,每組一個實數(shù)x。處理到文件結(jié)束。
輸出格式:
對于每組輸入x,輸出其對應(yīng)的F(x),每組一行,結(jié)果保留1位小數(shù)。
輸入樣例:
8.00
-5.0
輸出樣例:
在這里給出相應(yīng)的輸出。例如:
65.0
5.0
代碼長度限制
16 KB
時間限制
400 ms
內(nèi)存限制
64 MB
此題考查循環(huán)語句嵌套選擇語句
解決分段函數(shù),
仍沒有難度,可跳過。
#include<stdio.h>
int main()
{ double x,f;
while(scanf("%lf\n",&x)!=EOF)
{
if(x>0)
{
f=x*x+1;
}
if(x<0)
{
f=-x;
}
if(x==0)
{
f=100.0;
}
printf("%.1f\n",f);
}
return 0;
}
7-4 sdut-C語言實驗-最大公約數(shù)與最小公倍數(shù)
分數(shù) 15
作者 馬新娟
單位 山東理工大學(xué)
求兩個正整數(shù)的最大公約數(shù)與最小公倍數(shù)。
輸入格式:
輸入在一行中給出兩個正整數(shù)M和N(≤1000)。
輸出格式:
第一行輸出最大公約數(shù);
第二行輸出最小公倍數(shù)。
輸入樣例:
9 21
輸出樣例:
3
63
代碼長度限制
16 KB
時間限制
400 ms
內(nèi)存限制
64 MB
此題需要了解什么是最大公約數(shù)什么是最小公倍數(shù),
還要了解最小公倍數(shù)利用最大公約數(shù)的求法,
即:兩個數(shù)m,n他們的最大公約數(shù)為t,
那么最小公倍數(shù)為m*n/t,
此公式可大大降低題目難度,并節(jié)省時間。
#include<stdio.h>
int main()
{
int a,b, i,min, m,n;
scanf("%d %d",&m,&n);
if(m>n)
{
min=n;
}
else if(m<n)
{
min=m;
}
for(i=1;i<=min;i++)
{
if(m%i==0&&n%i==0)
{
a=i;
}
}
b=(m*n)/a;
printf("%d\n%d",a,b);
return 0;
}
7-5 sdut- C語言實驗-計算1到n的和(循環(huán)結(jié)構(gòu))
分數(shù) 10
作者 馬新娟
單位 山東理工大學(xué)
從鍵盤上輸入任意一個整數(shù)n,計算1到n的和。
輸入格式:
從鍵盤輸入任意整數(shù)n。
輸出格式:
輸出1到n的和。
輸入樣例:
在這里給出一組輸入。例如:
3
輸出樣例:
在這里給出相應(yīng)的輸出。例如:
6
代碼長度限制
16 KB
時間限制
400 ms
內(nèi)存限制
64 MB
此題為for循環(huán)基本題,不過多贅述。
#include<stdio.h>
int main()
{
int a=0,t,n,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
a=a+i;
}
printf("%d",a);
return 0;
}
7-6 sdut-C語言實驗- 簡單計算
分數(shù) 12
作者 馬新娟
單位 山東理工大學(xué)
接受從鍵盤輸入的N個整數(shù),輸出其中的最大值、最小值和平均值(平均值為整除的商)。
輸入格式:
第一行一個正整數(shù)N(N<=100);
第二行有N個用空格隔開的整數(shù)Ti (1 <= i <= N, 0 <= Ti <= 10000000)
輸出格式:
三個有空格隔開的整數(shù)分別為最大值、最小值和平均值,其中平均值為整除的商。
輸入樣例:
在這里給出一組輸入。例如:
5
1 2 3 5 4
輸出樣例:
在這里給出相應(yīng)的輸出。例如:
5 1 3
代碼長度限制
16 KB
時間限制
400 ms
內(nèi)存限制
64 MB
此題難度不大,
注意當i==1時,對max和min的賦值,
然后在接下來的循環(huán)比較。
注意對sum的初始化賦值。
#include<stdio.h>
int main()
{
int sum=0,max,min,n,a ,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{scanf("%d",&a);
if(i==1)
{
max=a;
min=a;
}
else if(i!=1)
{
if(a>max)
{
max=a;
}
if(a<min)
{
min=a;
}
}
sum=sum+a;
}
printf("%d %d %d",max,min,sum/n);
return 0;
}
7-7 sdut -C語言實驗 - 水仙花數(shù)
分數(shù) 13
作者 馬新娟
單位 山東理工大學(xué)
水仙花的花語是“敬意”。在春節(jié)時,很多地方的人喜歡把親手培育的水仙花送給自己最尊敬的人。
數(shù)學(xué)中研究“水仙花數(shù)”也是很有趣味的?!八苫〝?shù)”是指一個 3 位數(shù),它的每個位上的數(shù)字的 3次冪之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。
現(xiàn)在要求輸出所有在 m 和 n 范圍內(nèi)的水仙花數(shù)。
輸入格式:
輸入數(shù)據(jù)有多組,每組占一行,包括兩個整數(shù) m 和 n(100≤m≤n≤999)
輸出格式:
對于每個測試實例,要求輸出所有在給定范圍內(nèi)的水仙花數(shù),就是說,輸出的水仙花數(shù)必須大于等于 m,并且小于等于 n,如果有多個,則要求從小到大排列在一行內(nèi)輸出,之間用一個空格隔開;最后一個數(shù)據(jù)后面也有空格輸出。
如果給定的范圍內(nèi)不存在水仙花數(shù),則輸出 no。
每個測試實例的輸出占一行。
輸入樣例:
100 120
300 380
輸出樣例:
no
370 371
代碼長度限制
16 KB
時間限制
400 ms
內(nèi)存限制
64 MB
此題相較于平時練習所做的水仙花相比,難度大大降低,
很多同學(xué)未得分原因原因在于把題目復(fù)雜化了
此題已要求輸入值為三位數(shù),那么他們的指數(shù)也確定了,
邏輯較練習的水仙花題目簡單許多,在考試過程中,思維固化是失分原因,
要注意新題與舊題的區(qū)別。
#include<stdio.h>
int main()
{
int m,n,i,j;
while(scanf("%d %d",&m,&n)!=EOF)
{
int num=0;
for(i=m;i<=n;i++)
{
int sum=0;
int t=i;
int y,z;
for(;t>0;t=t/10)
{
j=t%10;
for(z=1,y=1;y<=3;y++)
z=z*j;
sum=sum+z;
}
if(sum==i)
{
printf("%d ",sum);
num++;
}
}
if(num!=0)printf("\n");
if(num==0) printf("no\n");
num=0;
}
return 0;
}
7-8 sdut-C語言實驗-哥德巴赫猜想
分數(shù) 15
作者 馬新娟
單位 山東理工大學(xué)
自然科學(xué)的皇后是數(shù)學(xué),數(shù)學(xué)的皇冠是數(shù)論;哥德巴赫猜想,則是皇冠上的明珠。
一七四二年,德國數(shù)學(xué)家哥德巴赫發(fā)現(xiàn),每一個大偶數(shù)都可以寫成兩個素數(shù)的和,有些偶數(shù)可以分解成多對素數(shù)的和。例如:10=3+7,10=5+5,即10可以分解為2對不同素數(shù)的和,但他和歐拉有生之年都不能夠證明它。從此,這成了一道難題,吸引了成千上萬數(shù)學(xué)家的注意。兩百多年來,多少數(shù)學(xué)家企圖給這個猜想作出證明,都沒有成功。
我國著名數(shù)學(xué)家陳景潤先生畢生投身到數(shù)學(xué)研究中,為中國乃至世界數(shù)學(xué)的研究做出了杰出的貢獻,尤其對哥德巴赫猜想的證明做了有效的推動。
下面讓我們編程來測試一下哥德巴赫猜想吧。輸入一個大于6的正整數(shù)n,編程統(tǒng)計偶數(shù)n可以分解為多少對不同的素數(shù)之和。
輸入格式:
輸入一個正整數(shù)n(6 <= n <= 32767)。
輸出格式:
輸出n可以分解的素數(shù)對數(shù)。
輸入樣例:
10
輸出樣例:
在這里給出相應(yīng)的輸出。例如:文章來源:http://www.zghlxwxcb.cn/news/detail-755372.html
2
代碼長度限制
16 KB
時間限制
400 ms
內(nèi)存限制
64 MB文章來源地址http://www.zghlxwxcb.cn/news/detail-755372.html
此題題目很長,但實則紙老虎,前面的文字都是在鋪墊背景,實際題目不難,但要注意的是,
此題如果邏輯復(fù)雜,會導(dǎo)致第四和第五測試點運行超時,這是很多同學(xué)得部分正確的原因,
很多同學(xué)在定義for()時,會讓i=1;i<=n;
其實,i在達到n/2時,再往后就不會有素數(shù)了,
因此讓i<=n/2會降低運行超時的可能。
同時在定義for時,盡量讓i=0;i<n;
#include<stdio.h>
int main()
{
int j,i,n,a,b,t,m,u=0;
scanf("%d",&n);
for(i=1;i<=n/2;i++)
{
a=0;
b=0;
for(j=2;j<i;j++)
{
if(i%j==0)
{
break;
}
}
if(j==i)
{
t=n-i;
for(m=1;m<=t;m++)
{
if(t%m==0)
{
b++;
}
}
if(b==2)
{
u++;
}
}
}
printf("%d",u);
return 0;
}```
到了這里,關(guān)于山東理工大學(xué)單元測試2重現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!