C語言中這樣的if語句是不是合法的
看了一下你的意思,以下可以滿足你的要求(主要是main函數中輸入數據的策略修改了,另外加入了一維動態數組技術),你的程序的主要問題在于從鍵盤上獲取單個字符,由于C語言(多數語言)的控制臺鍵盤輸入都帶有緩沖,要在循環中準確獲取字符是比較困難(會將回車等讀入,一般用getch、getc等函數)。在下面修改后的程序里避免這個問題。
#include <stdio.h>
#include <stdlib.h> //malloc和free需要
void fanxu(int *p,int n)
{
int i,j,t;
for(i=0,j=n-1;i<n/2;i++,j--)
{
t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
}
return;
}
main()
{
int *a,*p,j,N=0;
char ch1;
while (N < 1)
{
printf("Enter N=? ");
scanf("%d", &N);
}
a = (int*)malloc(sizeof(int)*N); //動態分配內存
for (j = 0; j < N; j++) scanf("%d", &a[j]);
N=j;
fanxu(a,N);
p=a;
for(p=a;p<a+N;p++)
printf("%d ",*p);
printf("\n");
free(a);
}
使用scanf("%c\n", ch1)會將上次scanf輸入的最后一個字符'\n'讀到ch1中,所以你的程序每次都相當于選擇了'n'。
嵌套的if語句 是什么
if語句里面還有if語句,就叫嵌套if語句。比如我們先判斷一個人是否在地球上---條件滿足---嵌套if判斷這個人是否在北半球---條件滿足---嵌套if判斷這個人是否是男人!
這就是一個簡單的3層嵌套if判斷:
if(一個人在地球上==true)
{
if(這個人在北半球==true)
{
if(這個人是男人==true)
{
嵌套完成,只有這3個條件都滿足才可以。嵌套主要起這個作用。
}
}
}