一些C語言錯題
//求n的階乘
int sum=1;
int n;
printf("請輸入n的值:");
scanf("%d",&n);
for (int j = 1; j < n+1; ++j) {
sum*=j;
}
printf("%d\n",sum);
int hee=0;
int b=1;
for ( int j = 1; j <= 3; j++) {
b *= j; // 計算n的階乘
hee += b; // 將n的階乘加到總和中
}
printf("%d",hee);
//模擬使用者登入 只能登陸三次(即輸入三次密碼)
int a;
int i;
int b = 123456;
for (i = 0; i < 3; i++) {
printf("請輸入密碼:");
scanf("%d", &a);
if (a == b) {
printf("密碼正確");
break;
} else {
printf("密碼不正確\n");
}
}
if (i == 3)
printf("輸入次數超過三次");
// 中間排除法
int arr[]={1,2,3,4,5,6,7,8,9,10};
int size=sizeof(arr)/sizeof(arr[0]); //陣列長度
int left=0;
int right=size-1;
int k=7;
//只有左下標小於等於右下標才能進行迴圈
while (left<=right) {
int a = (left + right) / 2;
if (arr[a] > k) {
//如果一半大於要找的數 右下標變成中間那個+1
right = a + 1;
} else if (arr[a] < k) {
//如果一半小於要找的數 左下標變成中間那個+1
left = a + 1;
} else {
printf("%d\n", a);
break;
}
}
if(left>right){
printf("找不到");
}
int a=3;
a+=a-=a*=a;
printf("%d",a);
double x=1, y;
y = x + 3 / 2;
printf("%lf", y);
int i=0,j=0;
for (; i < 10; ++i){
for (; j < 10; ++j){
printf("a");
}
}
//影片程式設計題1 三個數從大到小輸出
int main(){
int a,b,c;
int max,mid,min;
printf("請輸出第一個數:");
scanf("%d",&a);
printf("請輸出第二個數:");
scanf("%d",&b);
printf("請輸出第三個數:");
scanf("%d",&c);
max=a>b?(a>c?a:c):(b>c?b:c);
min=a<b?(a<c?a:c):(b<c?b:c);
mid=a+b+c-max-min;
printf("從大到小為:");
printf("%d ",max);
printf("%d ",mid);
printf("%d ",min);
}
//影片程式設計題2 列印1-100之間所有3的倍數的數字
int main(){
for (int i = 1; i < 101; ++i) {
if(i%3==0){
printf("%d ",i);
}
}
}
//影片程式設計題3 給兩個數 求最大公約數
int main(){
int a,b;
printf("請輸出第一個數:");
scanf("%d",&a);
printf("請輸出第二個數:");
scanf("%d",&b);
//這是為了假設 因為後面迴圈的是a%b
if(a<b){
int c=a;
a=b;
b=c;
}
int c;
while (b!=0){
c=a%b;
a=b;
b=c;
}
printf("最大公約數為:%d",a);
}
//影片程式設計題4 列印1000年到2000年之間的閏年
int main() {
for (int i = 1000; i < 2001; i++) {
if (i % 4 == 0 || i % 400 == 0 && i % 100 != 0) {
printf("%d ", i);
}
}
}
//影片程式設計題5 列印100-200之間的素數
質數又稱素數 一個大於1的自然數,除了1和它本身外,不能被其他自然數(質數)整除
如果一個數可以寫成 i=a*b 那a或者b 一定<=根號i
#include<math.h>
int main() {
for (int i = 100; i < 201; ++i) {
int j=0;
for(j=2;j<=sqrt(i);j++){
if(i%j==0){
break;
}
}
if(j> sqrt(i)){
printf("%d ", i);
}
}
}
int main() {
int a = 0, b = 0;
for (a = 1, b = 1; a < 101; a++) {
if (b > 21) break;
if (b % 3 == 1) {
b = b + 3;
continue;
}
b = b - 5;
}
printf("%d ", a);
}
//影片程式設計題6 1-100整數中出現多少個數字9
int main() {
int count = 0;
for (int i = 1; i < 101; ++i) {
// 1-90 100
if (i % 10 == 9) {
count++;
}
//90-99
else if (i / 10 == 9) {
count++;
}
}
printf("%d", count);
}
//影片程式設計題7 計算1/1-1/2+1/3-1/4........1/99+-1/100值
int main() {
double sum = 0;
int f=1;
for (int i = 1; i < 101; ++i) {
//1/1=1 1/2=0......... 1/88=0
//剛開始f=1 對應i=1 然後f=-1 對應i=2 然後f=-(-1)=1 對應i=3.........
sum +=f* 1.0 / i;
//f變成-1
f=-f;
}
printf("%.1lf", sum);
}
//影片程式設計題8 求10個整數中最大值
int main(){
int a[9];
//max=0錯誤 如果為負數那麼0最大 實際上你並未輸入0
int max=a[0];
for (int i = 0; i < 10; ++i) {
printf("輸入數字:");
scanf("%d",&a[i]);
if(a[i]>max){
max=a[i];
}
}
printf("%d",max);
}
//影片程式設計題9 乘法口訣表
int main() {
for (int i = 1; i <10; i++) {
for (int j = 1; j <i+1; j++) {
printf("%d*%d=%d\t", j, i, i * j);
}
printf("\n"); // 每行結束後換行
}
}