日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

暑假学习打卡【4】——北理工乐学第四周作业

發布時間:2023/12/2 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 暑假学习打卡【4】——北理工乐学第四周作业 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、【圖形】輸出一行星號

現在要用最簡單得辦法,在一行中輸出N個星號。

輸入:

N值

輸出:

一行中N個星號。

int main() { int a;//a表示自己輸入的數字 scanf("%d",&a); int i;//i表示星號數量 for(i=0;i<a;i++) printf("*");printf("\n"); return 0; }

------------------------------------------------這里是無情的切割線------------------------------------------------------

2、【圖形】數字正方型

這是雙重循環的入門題目,大家來看看,你會做嗎?

輸入 n 的值,輸出如下例( n=4 )所示的由數字組成的正方型。
? 1? 2? 3? 4
? 5? 6? 7? 8
? 9 10 11 12
?13 14 15 16

輸入:
??? n

輸出:
?? 數字組成的正方型

#include <stdio.h> int main() { int n,i,j,m;//n表示輸出的數字,i表示行數,j表示列數,m表示每一行第一個數字的大小 scanf("%d",&n); m=1; for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%3d",m); m++; } printf("\n"); } return 0; }

注意這里采用的是右對齊格式~

------------------------------------------------這里是無情的切割線------------------------------------------------------

3、【數列】求最小 m 值

求滿足下列不等式的最小 m。

??? 1 + 2 + 3 + 4 + ...... + m ≥ n

例如:n=100,當 m =14 時,滿足:1+2+3+4+...+13=91<100,而 1
+2+3+4+......+14=105>100。

輸入:n

輸出:m

#include <stdio.h> int main() { int n = 0;//n表示自己輸入的數據 int m = 0;//m表示輸出的結果 int i = 1; int s = 0;//s表示總和 scanf("%d", &n); for (i = 1;;i++) { s += i; m++; if (s >= n) { printf("%d\n", m); break; } } return 0; }

------------------------------------------------這里是無情的切割線------------------------------------------------------

4、【中學】尋找阿姆斯特朗數

請編寫一個程序尋找一種特殊整數:一個 n 位的正整數等于其各位數字的n次方之和

例如:407=4×4×4+0×0×0+7×7×7。所以407就是一個特殊數。

輸入:

??? 正整數的位數n(n<=6)。

輸出:

?? 所有此n位特殊數。每個數占一行。若不存在符合條件的特殊數,則輸出提示:"No output.”;若存在,則從小到大進行輸出。

說明:

假設輸入為4,在4位整數中,有3個4位的特殊數,則輸出格式為(輸出中的1111、2222和9999并不是4位特殊數,只是格式樣例):

1111 2222 9999

首先是我第一次寫這道題的過程,很繁瑣?

#include <stdio.h> int main() { int n;//n表示輸入的數字位數 int i; int min=1; int max=10; scanf("%d",&n); for(i=1;i<n;i++) { min*=10; max*=10; } int x,y,m=0;//y表示各位數的三次方的和 int a1; int a2,b2; int a3,b3,c3; int a4,b4,c4,d4; int a5,b5,c5,d5,e5; int a6,b6,c6,d6,e6,f6; switch(n) { case 1: for(x=min;x<max;x++) { a1=x%max; y=a1; if(x==y) { m=1; printf("%d\n",x); } else{ continue; } } if(m==0) { printf("No output."); } break; case 2: for(x=min;x<max;x++) { a2=x/10;b2=x%10; y=a2*a2+b2*b2; if(x==y) { m=1; printf("%d\n",x); } else{ continue; } } if(m==0) { printf("No output.\n"); } break; case 3: for(x=min;x<max;x++) { a3=x/100;b3=x/10%10;c3=x%10; y=a3*a3*a3+b3*b3*b3+c3*c3*c3; if(x==y) { m=1; printf("%d\n",x); continue; } else{ continue; } } if(m==0) { printf("No output."); } break; case 4: for(x=min;x<max;x++) { a4=x/1000;b4=x/100%10;c4=x%100/10;d4=x%100%10; y=a4*a4*a4*a4+b4*b4*b4*b4+c4*c4*c4*c4+d4*d4*d4*d4; if(x==y) { m=1; printf("%d\n",x); continue; } else{ continue; } } if(m==0) { printf("No output."); } break; case 5: for(x=min;x<max;x++) { a5=x/10000;b5=x/1000%10;c5=x%1000/100;d5=x%100/10;e5=x%100%10; y=a5*a5*a5*a5*a5+b5*b5*b5*b5*b5+c5*c5*c5*c5*c5+d5*d5*d5*d5*d5+e5*e5*e5*e5*e5; if(x==y) { m=1; printf("%d\n",x); continue; } else{ continue; } } if(m==0) { printf("No output."); } break; case 6: for(x=min;x<max;x++) { a6=x/100000;b6=x/10000%10;c6=x/1000%10;d6=x%1000/100;e6=x%100/10;f6=x%10; y=a6*a6*a6*a6*a6*a6+b6*b6*b6*b6*b6*b6+c6*c6*c6*c6*c6*c6+d6*d6*d6*d6*d6*d6+e6*e6*e6*e6*e6*e6+f6*f6*f6*f6*f6*f6; if(x==y) { m=1; printf("%d\n",x); continue; } else{ continue; } if(m==0) { printf("No output."); } break; } } }

后面對此進行修改后:

#include <stdio.h> #include <math.h> int main() {int n=0;scanf("%d",&n); int i=0,min=0,max=0,j=0;//min表示n位數的最小值,max表示n位數的最大值,j表示在min~max區間的n位數 int sum=0,sign=0;min=pow(10,n-1);max=pow(10,n)-1; int arr[7]={0};for(j=min;j<=max;j++){sum=0; for(i=1;i<=n;i++){int x=pow(10,i);int y=pow(10,i-1);arr[i]=(j%x)/y; //確定每一位的數字} for(i=1;i<=n;i++)sum+=pow(arr[i],n); if(sum==j){sign=1;printf("%d\n",sum);}}if(sign==0)printf("No output.\n");return 0; }

------------------------------------------------這里是無情的切割線------------------------------------------------------

5、【日期】再算星期(選做)

再次給出任意一個年月日(年>1900),現在我們不能只是直接計算,要先判斷給出的日期是否合法,對于非法的日期要給出錯誤提示信息,合法的日期要再計算是星期幾。

輸入:

????年 月 日

輸出:

????0~6。
??? 星期日用 0 表示,星期一用 1 表示,星期二用 2 表示......星期六用 6 表示。

假設年份大于1900。先想一想:我們現在只會使用 if 語句,該如何建立數學模型?

#include <stdio.h> int main() { int m[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int a, b, c, i, j, sum = 0, day = 0, d; scanf("%d %d %d", &a, &b, &c); if ((a % 4 == 0) && (a % 100 != 0) || (a % 400 == 0)) m[1] = 29; if ((b > 12) || (b < 1)) { printf("month is error.\n"); return 0; } else if ((c > m[b - 1]) || (c <= 0)) { printf("day is error.\n"); return 0; } else for (i = 1900; i < a; i++) { if ((i % 4 == 0) && (i % 100 != 0) || (i % 400 == 0)) sum = sum + 366; else sum = sum + 365; } for (j = 0; j < (b - 1); j++) { day = day + m [j]; } d = ((sum + day + c) % 7) ; printf("%d\n", d); return 0; }

------------------------------------------------這里是無情的切割線------------------------------------------------------

以上。

總結

以上是生活随笔為你收集整理的暑假学习打卡【4】——北理工乐学第四周作业的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。