文档库 最新最全的文档下载
当前位置:文档库 › mega16 C程序

mega16 C程序

mega16 C程序
mega16 C程序

1.参考书P121 数码管轮流显示0~F

#include

#include

flash unsigned char led_7[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

flash unsigned char position[8]={ 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void main(void)

{

unsigned char i=0,j=0;

PORTA=0x00; // 显示控制I/O端口初始化

DDRA=0xFF;

PORTC=0xFF;

DDRC=0xFF;

while(1)

{

for(i=0;i<=7;i++)

{

PORTC=position[i];

for(j=0;j<16;j++)

{

PORTA=led_7[j];

delay_ms(500);

}

}

};

}

用定时器实现数码管轮流显示0~F

#include

flash unsigned char

led_7[17]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00};

flash unsigned char position[8]={ 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsigned char disbuff[8]; // 显示缓冲区,存放要显示的8个字符的段码值

unsigned char posit,time_counter;

bit time_500ms_ok;

void display(void) // 6位LED数码管动态扫描函数

{

PORTC = 0xff;

PORTA = led_7[disbuff[posit]];

PORTC = position[posit];

if (++posit >=8 ) posit = 0;

}

interrupt [TIM0_COMP] void timer0_comp_isr(void)

{

display(); // 调用LED扫描显示

if (++time_counter>=250)

{

time_counter = 0;

time_500ms_ok = 1;

}

}

void main(void)

{

unsigned char i=0,new=0;

PORTA=0x00; // 显示控制I/O端口初始化

DDRA=0xFF;

PORTC=0xFF;

DDRC=0xFF;

// T/C0 初始化

TCCR0=0x0B; // 内部时钟,64分频(4M/64=62.5KHz),CTC模式

TCNT0=0x00;

OCR0=0x7C; // OCR0 = 0x7C(124),(124+1)/62.5=2ms(2ms中断一次,电平方向变化一次)TIMSK=0x02; // 允许T/C0比较匹配中断

posit = 0;

for(i=0;i<8;i++)

disbuff[i]=16;

#asm("sei") // 开放全局中断

while (1)

{

if(time_500ms_ok)

{

time_500ms_ok=0;

for(i=7;i>=1;i--)

disbuff[i]=disbuff[i-1];

disbuff[0]=new;

if(++new>=16) new=0;

}

}

}

2.设计一段能够自动测试实验板上8个数码管好坏的检测系统。系统能按顺序,逐位(1、2、3、4、5、6、7、8),逐段(a、b、c、d、e、f、g、p)的点亮每个段,时间0.5秒。画出硬件电路,编写软件,并实现。

#include

flash unsigned char position[8]={ 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void main(void)

{

unsigned char i=0,j=0;

PORTA=0x00; // 显示控制I/O端口初始化

DDRA=0xFF;

PORTC=0xFF;

DDRC=0xFF;

while(1)

{

for(i=0;i<=7;i++)

{

PORTC=position[i];

for(j=0;j<8;j++)

{

PORTA=led_7[j];

delay_ms(500);

}

}

};

}

3.用定时器实现六十秒倒计时器

#include

flash unsigned char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

flash unsigned char position[2]={0xfe,0xfd};

unsigned char time; // 时、分、秒计数单元

unsigned char dis_buff[2]; // 显示缓冲区,存放要显示的6个字符的段码值

int time_counter; // 中断次数计数单元

unsigned char posit;

bit time_1s_ok;

void display(void) // 6位LED数码管动态扫描函数

{

PORTC = 0xff;

PORTA = led_7[dis_buff[posit]];

PORTC = position[posit];

if (++posit >=2 ) posit = 0;

}

// Timer 0 比较匹配中断服务

interrupt [TIM0_COMP] void timer0_comp_isr(void)

{

{

time_counter = 0;

time_1s_ok = 1;

}

}

void time_to_disbuffer(void) // 时钟时间送显示缓冲区函数

{

dis_buff[0] = time % 10;

dis_buff[1] = time / 10;

}

void main(void)

{

PORTA=0x00; // 显示控制I/O端口初始化

DDRA=0xFF;

PORTC=0x03;

DDRC=0x03;

// T/C0 初始化

TCCR0=0x0B; // 内部时钟,64分频(4M/64=62.5KHz),CTC模式

TCNT0=0x00;

OCR0=0x7C; // OCR0 = 0x7C(124),(124+1)/62.5=2ms(2ms中断一次,电平方向变化一次)TIMSK=0x02; // 允许T/C0比较匹配中断

time=60;

posit = 0;

time_to_disbuffer();

#asm("sei") // 开放全局中断

while (1)

{

if (time_1s_ok) // 1秒到

{

time_1s_ok = 0;

if (--time <= 0) // 以下时间调整

{

time=60;

}

time_to_disbuffer(); // 新调整好的时间送显示缓冲区

}

}

}

张艺鸿的:

#include

#include

flash unsigned char led_7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

flash unsigned char position[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //从右边第0位开始定义

void main(void)

{

PORTA=0x00;

DDRA=0xff;

PORTC=0xff;

DDRC=0xff;

while (1)

{

unsigned int point=0,show=0,i=0,k=0,position2=7;

unsigned int max=8,count=50;

char time_counter=100;

while(max)

{

for(;point

{

while(count)

{

PORTA=led_7[show];

PORTC=position[point];

DDRC=0xff;

delay_ms(3);

DDRC=0x00;

k=i;

while(k)

{

PORTA=led_7[--k];

DDRC=0xff;

PORTC=position[7-k];

delay_ms(3);

DDRC=0x00;

position2 --;

}

count--;

}

count=50/(i+1);

}

i++;

k=i;

}

};

}

我自己的:测试通过

# include

# include

flash unsigned char led_7[8]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07}; flash unsigned char position[8]={ 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char disbuff[8];

void main(void)

{

unsigned char max=8,count=50,i,j,k;

PORTA=0x00; // 显示控制I/O端口初始化

DDRA=0xFF;

PORTC=0xFF;

DDRC=0xFF;

for(i=0;i

disbuff[i]=i;

while(max) //max记录移动的数字需走的位数

{

for(i=0;i

{

count=50;

while(count)

{

PORTA=led_7[8-max];

PORTC=position[i];

delay_ms(10);

PORTC=0xff;

for(k=0,j=0;j<8-max;j++,k++)

{

PORTA=led_7[disbuff[k]];

PORTC=position[7-j];

delay_ms(2);

PORTC=0xff;

}

count--;

}

}

5. 6.使用外部中断INT0、INT1,分别由按键K1、K2控制,使按1次K1键,显示数字加1;按1次K2键显示数字减1。

#include

#include

flash unsigned char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

flash unsigned char position[2]={0xfe,0xfd};

unsigned char dis_buff[2]; // 显示缓冲区,存放要显示的6个字符的段码值

unsigned char num;

void display(void)

{

unsigned char i,j;

for(i=0;i<2;i++)

{

PORTA=led_7[dis_buff[i]];

PORTC=position[i];

delay_ms(2);

PORTC=0xff;

}

}

void num_to_disbuff(void)

{

dis_buff[0]=num%10;

dis_buff[1]=num/10;

}

interrupt [EXT_INT0] void ext_int0_isr(void)

{

if(++num>=100)

num=0;

num_to_disbuff();

delay_ms(200); //防止按键时时间过长,读入了若干个低电平,使得连续加数

}

interrupt [EXT_INT1] void ext_int1_isr(void)

{

if(num) num--;

else num=99;

}

void main(void)

{ DDRD=0x00;

PORTA=0x00;

DDRA=0xff;

PORTC=0xff;

DDRC=0x3f;

GICR|=0xC0; // 允许INT0、INT1中断

MCUCR=0x00; // INT0、INT1下降沿触发

GIFR=0xC0; // 清除INT0、INT1中断标志位

#asm("sei") // 全局中断允许

num=10;

num_to_disbuff();

while (1)

{

display();

}

}

用定时器和中断实现加一减一的操作

#include

#include

flash unsigned char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; flash unsigned char position[2]={0xfe,0xfd};

unsigned char dis_buff[2]; // 显示缓冲区,存放要显示的6个字符的段码值unsigned char num,posit;

void display(void) // 6位LED数码管动态扫描函数

{

PORTC = 0xff;

PORTA = led_7[dis_buff[posit]];

PORTC = position[posit];

if (++posit >=2 ) posit = 0;

}

// Timer 0 比较匹配中断服务

interrupt [TIM0_COMP] void timer0_comp_isr(void)

{

display(); // 调用LED扫描显示

void num_to_disbuff(void)

{

dis_buff[0]=num%10;

dis_buff[1]=num/10;

}

interrupt [EXT_INT0] void ext_int0_isr(void)

{

if(++num>=100)

num=0;

num_to_disbuff();

delay_ms(200);

}

interrupt [EXT_INT1] void ext_int1_isr(void)

{

if(num) num--;

else num=99;

num_to_disbuff();

delay_ms(200);

}

void main(void)

{ DDRD=0x00;

PORTA=0xFF;

DDRA=0xFF;

DDRC=0xFF;

GICR|=0xC0; // 允许INT0、INT1中断

MCUCR=0x00; // INT0、INT1下降沿触发

GIFR=0xC0; // 清除INT0、INT1中断标志位

// T/C0 初始化

TCCR0=0x0B; // 内部时钟,64分频(4M/64=62.5KHz),CTC模式

TCNT0=0x00;

OCR0=0x7C; // OCR0 = 0x7C(124),(124+1)/62.5=2ms(2ms中断一次,电平方向变化一次)TIMSK=0x02; // 允许T/C0比较匹配中断

#asm("sei") // 全局中断允许

num=10;

num_to_disbuff();

posit=0;

while (1)

{

}

用定时器在数码管上实现用开关控制的加一减一操作(用到read_key()函数);

#include

flash unsigned char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; flash unsigned char position[2]={0xfe,0xfd};

unsigned char counter,time_10ms_counter=0;

unsigned char disbuffer[2],i=0;

bit time_10ms_ok=0;

void display(void)

{

PORTC=0xff;

PORTA=led_7[disbuffer[i]]; //显示子程序

PORTC=position[i];

if(++i>=2)i=0;

}

interrupt [TIM0_COMP] void timer0_comp_isr(void)

{

display(); //2ms显示一次数据

if(++time_10ms_counter>=5)

{

time_10ms_counter=0; //10ms计时

time_10ms_ok=1;

}

}

void to_disbuffer(void)

{

disbuffer[0]=counter%10; //拆分十位和个位子程序

disbuffer[1]=counter/10;

}

#define key_input7 PIND.7

#define key_input6 PIND.6

#define key_state_0 0

#define key_state_1 1

#define key_state_2 2

unsigned char read_key7(void)

{

static unsigned char key_state7=0;

unsigned char key_press7,key_return7=0;

key_press7=key_input7;

switch(key_state7)

{

case key_state_0:

if(!key_press7)key_state7=key_state_1;

if(!key_press7) //PIND.7消抖子程序 {

key_return7=1;

key_state7=key_state_2;

}

else

key_state7=key_state_0;

break;

case key_state_2:

if(key_press7)key_state7=key_state_0;

break;

}

return key_return7;

}

unsigned char read_key6(void)

{

static unsigned char key_state6=0;

unsigned char key_press6,key_return6=0;

key_press6=key_input6;

switch(key_state6)

{

case key_state_0:

if(!key_press6)key_state6=key_state_1;

break;

case key_state_1:

if(!key_press6)

{

key_return6=1;

key_state6=key_state_2; //PIND.6消抖子程序 }

else

key_state6=key_state_0;

break;

case key_state_2:

if(key_press6)key_state6=key_state_0;

break;

}

return key_return6;

}

void main(void)

{

PORTA=0x00;

DDRA=0xff;

PIND=0xff; //不用定义

DDRD=0x00;

TCCR0=0x0B;

TCNT0=0x00; //设置定时器初值,2ms一次中断

OCR0=0x7c;

TIMSK=0x02;

counter=0;

to_disbuffer(); //计数结果拆分

i=0;

#asm("sei")

while (1)

{

if(time_10ms_ok) //10ms到

{

time_10ms_ok=0;

if(read_key7())

{

if(++counter>=99) //读PIND.7,确认按下后counter加1

counter=0;

}

if(read_key6())

{

if(counter)--counter; //读PIND.6,确认按下后counter减1

else counter=99;

}

to_disbuffer(); //计数结果拆分

}

};

}

6.用定时器代替延时程序,实现箭头的移动。

#include

#define row 12

#define speed 10*8 //移动速度调节

flash unsigned char char_7[row]={0x10,0x38,0x7C,0xFE,0x38,0x38,0x38,0x38,0x00,0x00,0x00,0x00}; bit time_1ms_ok;

unsigned char dis_buff[8];

void display(void)

{

static unsigned char i;

PORTC = 0xFF;

PORTA = dis_buff[i];

}

interrupt [TIM0_COMP] void timer0_comp_isr(void) // 1ms 中断一次

{ display();

time_1ms_ok = 1;

}

void main(void)

{

unsigned char move_speed,i,j;

PORTA=0x00;

DDRA=0xFF;

PORTC=0xFF;

DDRC=0xFF;

TCCR0=0x0B;

TCNT0=0x00; OCR0=0x3D;

TIMSK=0x02; //允许T/C0 CTC中断

#asm("sei") // 开全局中断

for (i=0;i<=8;i++) {dis_buff[i] = char_7[i];}

j = 8;

while (1)

{

if (time_1ms_ok)

{ time_1ms_ok = 0;

if (++move_speed>= speed) //可以用这种方法来代替延时

{

move_speed = 0; //先显示前八行,如果时间到move_speed,则依次向上移动一行 for (i=0;i<=6;i++)

{

dis_buff[i] = dis_buff[i+1];

}

dis_buff[7] = char_7[j];

if (++j>= row) j = 0;

}

}

}

}

1用定时器在点阵上实现显示”<-2月1日”(还不明白,问杜莎)

#include

flash unsigned char tab[8][4]= {{0x00,0x3c,0x06,0x00},

{0x10,0x07,0xc2,0xf0},

{0x30,0x06,0x42,0x90},

{0x7f,0x3f,0xc2,0x90}, //要显示的字幕的数组8X32

{0x30,0x3e,0x4f,0x90},

{0x10,0x02,0x40,0xf0}};

flash unsigned char position[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsigned char k=0;

unsigned char j=0,m=0;

int time_1s_counter=0;

bit time_1s_ok=0;

void display(unsigned char i)

{

PORTC=0xFF;

if(i>23)m=0;

else m=i/8+1; //每行的最后一个字节是和第一个字节相与

PORTA=(tab[j][i/8]<<(i%8))|(tab[j][m]>>(8-i%8)); //左移的效果是通过相邻两个数相与得到的PORTC=position[j];

if(++j>=8)j=0; //C口从第一行扫描到第七行

}

interrupt [TIM0_COMP] void timer0_comp_isr(void)

{

display(k); //2ms显示一行的数据,16ms显示一幅画面,所以在1s内刷新了1000/16次if(++time_1s_counter>=500)

{

time_1s_counter=0;

time_1s_ok=1; //1s计时子程序

}

}

// Declare your global variables here

void main(void)

{

PORTA=0x00;

DDRA=0xFF;

PORTC=0xFF;

DDRC=0xFF;

TCCR0=0x0B;

TCNT0=0x00; //设定定时器初值,2ms一次中断

OCR0=0x7c;

TIMSK=0x02;

#asm("sei")

while (1)

{

time_1s_ok=0;

if(++k>=32)k=0; //显示内容变化

}

};

}

书P269 使用定时器的产生特定频率,输出到蜂鸣器上产生不同的音调。使用定时器产生DO RE MI FA SO LA SI 声音,每个音长1秒。(假设 do 256 re 288 mi 320 fa 341 so 384 la 426 si 480) hz

#include

flash unsigned int t[9] = {0,956,865,759,716,638,568,506,470};

flash unsigned char d[9] = {0,105,116,132,140,157,176,198,209};

#define Max_note 16

flash unsigned char music[Max_note] = {1,4,2,4,3,4,4,4,5,4,6,4,7,4,8,4};

unsigned char note_n;

unsigned int int_n;

bit play_on;

// External Interrupt 1 service routine

interrupt [EXT_INT1] void ext_int1_isr(void)

{

if (!play_on)

{

TCCR1B = 0x09;

}

}

// Timer 1 output compare A interrupt service routine

interrupt [TIM1_COMPA] void timer1_compa_isr(void)

{

if (!play_on)

{

note_n = 0;

int_n = 1;

play_on = 1;

}

else

{

if (--int_n == 0)

{

TCCR1B = 0x08;

if (note_n < Max_note)

{

note_n++;

int_n = int_n * music[note_n];

note_n++;

TCCR1B = 0x09;

}

else

play_on = 0;

}

}

}

// Declare your global variables here

void main(void)

{

PORTD=0x08;

DDRD=0x20;

TCCR1A=0x40;

TCCR1B=0x08;

TCNT1 = 0x00;

ICR1H = 0x00;

ICR1L = 0x00;

OCR1A = 0x00;

OCR1B = 0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x10;

// External Interrupt(s) initialization

// INT0: Off

// INT1: On

// INT1 Mode: Falling Edge

// INT2: Off

GICR|=0x80;

MCUCR=0x08;

MCUCSR=0x00;

GIFR=0x80;

// Global enable interrupts

#asm("sei")

while (1)

{

}

}

符“a”和“b”,且具备类似PC 机键盘的连发功能:如按下“a”键不放,第1 秒内输

入1 个“a”,以后每隔0.2 秒输入一个“a”……。输入的“a”在8 个LED 数码管上由

右向左移动。

#include

flash unsigned char led_7[3]={0x77,0x7c,0x00};

flash unsigned char position[8]={ 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char dis_buff[8]; // 显示缓冲区,存放要显示的8个字符的段码值

unsigned char posit,i;

unsigned char key_stime_counter;

bit key_stime_ok;

void display(void) // 8位LED数码管动态扫描函数

{

PORTC = 0xff;

PORTA = led_7[dis_buff[posit]];

PORTC = position[posit];

if (++posit >=8 ) posit = 0; // (3)

}

// Timer 0 比较匹配中断服务,2ms定时

interrupt [TIM0_COMP] void timer0_comp_isr(void)

{

display(); // LED扫描显示

if (++key_stime_counter >=5)

{

key_stime_counter = 0;

key_stime_ok = 1; // 10ms到

}

}

#define key_input7 PIND.7 // 按键输入口

#define key_input6 PIND.6

#define key_state_0 0

#define key_state_1 1

#define key_state_2 2

#define key_state_3 3

unsigned char read_key_n7(void)

{

static unsigned char key_state7 = 0, key_time = 0;

unsigned char key_press, key_return7 = 0;

key_press = key_input7; // 读按键I/O电平

case key_state_0: // 按键初始态

if (!key_press) key_state7 = key_state_1; // 键被按下,状态转换到键确认态

break;

case key_state_1: // 按键确认态

if (!key_press)

{

key_state7 = key_state_2; // 按键仍按下,状态转换到计时1

key_time = 0; // 清另按键时间计数器

}

else

key_state7 = key_state_0; // 按键已抬起,转换到按键初始态

break;

case key_state_2:

if (key_press)

{

key_state7 = key_state_0; // 按键已释放,转换到按键初始态

key_return7 = 1; // 输出"1"

}

else if (++key_time >= 100) // 按键时间计数

{

key_state7 = key_state_3; // 按下时间>1s,状态转换到计时2

key_time = 0; // 清按键计数器

key_return7 = 2; // 输出"2"

}

break;

case key_state_3:

if (key_press)

key_state7 = key_state_0; //按键已释放,转换到按键初始态

else

{

if (++key_time >= 20) // 按键时间计数

{

key_time = 0; // 按下时间>0.5s,清按键计数器

key_return7 = 2; // 输出"2"

}

}

break;

}

return key_return7;

}

unsigned char read_key_n6(void)

{

static unsigned char key_state6 = 0, key_time = 0;

unsigned char key_press, key_return6 = 0;

{

case key_state_0: // 按键初始态

if (!key_press) key_state6 = key_state_1; // 键被按下,状态转换到键确认态

break;

case key_state_1: // 按键确认态

if (!key_press)

{

key_state6= key_state_2; // 按键仍按下,状态转换到计时1

key_time = 0; // 清另按键时间计数器

}

else

key_state6 = key_state_0; // 按键已抬起,转换到按键初始态

break;

case key_state_2:

if (key_press)

{

key_state6 = key_state_0; // 按键已释放,转换到按键初始态

key_return6 = 1; // 输出"1"

}

else if (++key_time >= 100) // 按键时间计数

{

key_state6 = key_state_3; // 按下时间>1s,状态转换到计时2

key_time = 0; // 清按键计数器

key_return6 = 2; // 输出"2"

}

break;

case key_state_3:

if (key_press)

key_state6 = key_state_0; //按键已释放,转换到按键初始态

else

{

if (++key_time >= 20) // 按键时间计数

{

key_time = 0; // 按下时间>0.5s,清按键计数器

key_return6 = 2; // 输出"2"

}

}

break;

}

return key_return6;

}

void main(void)

{

unsigned char n=0;

DDRA = 0xFF;

PORTC = 0xFF;

DDRC = 0xFF;

DDRD = 0x00; // PD7、PD6为输入方式

// T/C0 初始化

TCCR0 = 0x0B; // 内部时钟,64分频(4M/64=62.5KHz),CTC模式TCNT0 = 0x00;

OCR0 = 0x7C; // OCR0 = 0x7C(124),(124+1)/62.5=2ms

TIMSK = 0x02; // 允许T/C0比较匹配中断

posit = 0;

#asm("sei") // 开放全局中断

for(i=0;i<8;i++)

dis_buff[i]=3;

while (1)

{

if (key_stime_ok)

{

key_stime_ok = 0; // 10ms到

switch (read_key_n7())

{

case 1:

dis_buff[n++]=0;

break;

case 2:

dis_buff[n++]=0;

break;

}

switch (read_key_n6())

{

case 1:

dis_buff[n++]=1;

break;

case 2:

dis_buff[n++]=1;

break;

}

if(n>=8) n=0;

}

};

}

张雨田的:

c语言程序设计期末试题A(含答案)

c语言程序设计期末试题A(含答案) 一、单项选择题(选择一个最佳答案,每题2分,共20分) 1. 一个C程序的执行是从(A )。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序的main函数开始,到本程序文件的最后一个函数结束 D) 本程序文件的第一个函数开始,到本程序main函数结束 2. 下列选项中,不能用作标识符的是(D )。 A) _1234_ B) _1_2 C) int_2_ D) 2_int_ 3. 以下定义语句中正确的是( C)。 A) char a='A'b='B'; B) float a=b=10.0; C) int a=10,*b=&a; D) float *a,b=&a; 4. 设有以下定义:#define d 2 int a=0; double b=1.25; char c=’A’; 则下面语句中错误的是(B)。 A) a++; B) b++ C) c++; D) d++; 5. 以下4个选项中,不能作为一条C语句的是(D)。 A) {;} B) a=0,b=0,c=0; C) if(a>0); D) if(b==0) m=1;n=2; 6. 有以下定义语句double a,b; int w; long c; 若各变量已正确赋值,则下列选项中正确的表达式是( C)。 页脚内容1

A) a=a+b=b++ B) w%(int)a+b) C) (c+w)%(int)a D) w=a==b; 7. 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是(D)。 A) p=1; B) *q=2; C) q=p; D) *p=5; 选D. A.p是一个指针,不能给它赋一个整型的值1 B.*q仍然是一个指针,*q就是p.所以也不能给它赋一个整型的值. C.q=p;q是个二级指针,p是一级指针,不能把一级指针赋给二级指针. *p=5,即给n赋值为5,正确. 8. 设有定义:int a,*pa=&a; 以下scanf语句中能正确为变量a读入数据的是( A)。 A) scanf(“%d”,pa) ; B) scanf(“%d”,a) ; C) scanf(“%d”,&pa) ; D) scanf(“%d”,*pa); 9. 若有说明:char *language[]={”FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};则表达式 *language[1]>*language[2]比较的是(A)。 A)字符B和字符P B) 字符串FORTRAN和字符串BASIC C)字符F和字符B D) 字符串BASIC和字符串PASCAL 10. 执行语句for(i=1;i++<4;);后变量i的值是(C )。 A) 3 B)4 C) 5 D) 不定 一、填空题(每空2分,共18分) 1. 若有定义:int a=7;float x= 2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值为2.5。 页脚内容2

C语言程序设计期末考试选择题题库

第一章1、一个C程序可能出现的错误有(A)A,以上都包括 B,逻辑错误 C,运行错误 D,语法错误 2、C程序中一般可以包含几个函数(D) A.1个 B.多个 C.0个 D.至少一个 3.C语言属于程序设计语言的哪个类别(B) A.机器语言 B.高级语言 C.面向对象语言 D.汇编语言 4.以下关于C语言描述错误的是(B) A.一个C程序总是从main函数开始执行 B.一个C程序可以包含多个main函数 C.每个语句的最后必须有一个分号 D.C语言的注释符是以"/*"开始并以"*/"结束

5、在调试过程中,逻辑错误是指(C) A.所书写的语句,不符合C的语法。 B.在从obj生成exe文件的过程中,如果函数名书写错误,可能产生的错误。 C.程序的运行结果不符合题目要求。 D.在exe文件的执行过程中,产生运行异常。 第二章 1、16位的二进制数可以表示的整数的范围是(C) A.[-32768,32768] B.[-32767,32768] C.[-32768,32767] D.[-32767,32767] 2、C语言中的实型数据包括(A) A.float和double B.int和float C.float和char D.int和double 3、以下不合法的字符常量是(C) A.'2' B.'A' C.'ab'

4、在以下各组标识符中,均是合法的C语言标识符是(A) A.abc,A_4d,_student,xyz_abc B.auto,12-a,a_b,ab5.x C.A_4d,_student,xyz_abc,if D.abc,a_b,union,scan 5、若有定义:chara;intb;floatc;doubled; 则表达式a*b+d-c值的类型为(A) A.char B.float C.double D.int 6、类型修饰符unsigned不能修饰(D) A.char B.longint C.int D.float 7、若有定义:doublex=1,y; 执行语句,则y的值是(B) A,1 B,2.0

C语言程序简单例子讲解学习

实验二参考答案 1.输入两个整型数字,输出他们的和。 #include main() { int a, b, sum; scanf(“%d%d ”, &a, &b); sum=a+b; printf(“a+b=%d ”, sum); } 2.输入两个实型数,输出他们的和与乘积。 #include main() { float a, b, sum, product; scanf(“%f%f ”, &a, &b); sum=a+b; product=a*b; printf(“a+b=%5.2f, a*b =%5.2f ”, sum, product); } 3.求方程02=++c bx ax 的根(设042≥-ac b )(其中a ,b ,c 的值由键盘输入)。 #include #include main() { float a, b, c, dt, x1, x2; scanf(“%f%f%f ”, &a, &b, &c); dt=sqrt(b*b-4*a*c); x1=(-b+dt)/(2*a); x2=(-b-dt)/(2*a); printf(“x1=%5.2f, x2 =%5.2f ”, x1, x2); }

4.鸡兔同笼,已知鸡兔总头数为h,总脚数为f,求鸡兔各多少只?(h和f的值由键盘输入,输出鸡和兔的头数) #include main() { int h, f, x,y; scanf(“%d%d”, &h, &f); x=2*h-f/2; y=f/2-h; printf(“x=%d, y =%d”, x, y); }

c语言程序设计期末试题B(含答案)

c语言程序设计期末试题B(含答案) 一单项选择题(每小题1分,共10分) 1. A 2. C 3. D 4. A 5. B 1.以下4组用户定义标识符中,全部合法的一组是() A)_total clu_1 sum B)if -max turb C)txt REAL 3COM D)int k_2 _001 2.以下程序的输出结果是() #include main( ) { int a = 1, b = 2, c = 3; printf(“%d”, c>b>a); } A) 2 B) 1 C) 0 D) 3 3.以下正确的叙述是() A) 在C语言中,main函数必须位于文件的开头 B) C语言每行中只能写一条语句 C) C语言本身没有输入、输出语句 D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误 4.设有定义:int a,*pa=&a; 以下scanf语句中能正确为变量a读入数据的是() A)scanf("%d",pa); B)scanf("%d",a); C)scanf("%d",&pa); D)scanf("%d",*pa); 5.若有以下程序段, int c1=1,c2=2,c3; c3=1.0/c2*c1; 则执行后,c3中的值是() A) 0 B) 0.5 C) 1 D) 2 6. D 7. D 8. A 9. C 10. D 6.能正确表示逻辑关系:“a≥=10或a≤0”的C语言表达式是() A) a>=10 or a<=0 B)a>=0|a<=10 C)a>=10 &&a<=0 D)a>=10‖a<=0 7.执行下面的程序时,将1、2、3、4分别赋给a、b、c、d,正确的输入是() main( ) { int a,b,c,d; scanf(“%d,%d,%d%d”,&a,&b,&c,&d); … } A)1 2 3 4 B)1 2 3,4 C) 1,2,3,4 D) 1,2,3 4

C语言程序设计期末考试试题及答案知识分享

C语言程序设计试题 (2008 /2009 学年第二学期) 一.选择题(满分30分,每题2分) 1.若a、b、c都定义为int类型且初值为0,则以下不正确的赋值语句是 D 。 A. a=b=c+8; B. a+=y+3; C. c++; D. a+b+c 2. 已知int j,i=1;执行语句“j=i++;”后,变量i的值是 B 。 A. 1 B. 2 C. –1 D. -2 3.执行下面程序: #include "stdio.h" void main() { int a=1,b=2,c=3; c=(a+=a+2),(a=b,b+3); printf(“%d,%d,%d”,a,b,c); } 则输出结果是: A 。 A. 2,2,4 B. 4,2,3 C. 5,5,3 D. 4,2,5 4.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为 D 。 A. a< >0 B. !a C. a=0 D. a 5. for (j=0;j<11;j++);循环结束后,j的值是 B 。 A. 12 B. 11 C. 10 D. 9 6. C语言中函数返回值的类型由 D 决定的。 A. return语句中的表达式类型 B. 调用该函数的主调函数的类型 C. 调用函数时临时决定 D. 定义函数时所指定的函数类型 7. 下列说法中正确的是 B 。 A 在调用用户自定义函数时,必须对其进行声明。 B 函数可以返回一个值,也可以什么值也不返回。 C 说明函数时,必须明确参数的类型和返回值。 D 在程序设计中空函数没有什么作用。8. 若int i=10;执行下列程序后,变量i的正确结果是 D 。 switch ( i ) {case 0: i+=1; case 10: i+=1; case 11: i+=1; default: i+=1; } A. 10 B. 11 C. 12 D. 13 9. 下列语句中不正确的字符串赋值或初始化的是 C 。 A. char str[10]={"strings"}; B.char str[8]={'s','t','r','i','n ','g','s','\0'}; C. char str[10]; str= "strings"; D. char str[]= "strings"; 10. 有如下程序: #include void main() { int a=1,b=0,c=0; if (a

C语言程序设计期末考试样卷

2008年C语言程序设计期末考试样卷 一、填空题 1、C语言程序从函数开始执行。 2、关系运算的结果得一个整数值:或者。 3、已知int a[ ]={0,1,2,3,4,5}; ,则它的最大下标是。 4、结构化程序的3种基本结构是,和。 5、若a1和a2都是double型变量,且a1的初值为3.0,a2的初值为2.0,则表达式pow(a2,fabs(a1))的值为。 6、表达式“8.2-2/3”的计算结果是。 7、若有定义:int a=25, b=14, c=19; 则表达式(a=bb?c:d):c)的值是。 8、设有以下结构体定义 struct emp { char name[8]; int age; char sex; }staff; 则用户定义的结构体类型名为。 9、表达式5>3&&2||8<4-!1的值。 10、已知int a[10]; ,则a占用内存个字节的存储单元,代表他们的首地址是 。 11、将str定义为字符数组并初始化为“Lei”的语句是。 12、设有定义:int n, *k=&n; ,以下语句利用指针变量k读写变量n中的内容,请将下列语句补充完整。scanf(“%d”, ); printf(“%d\n”, ); 13、设y是int型变量,请写出判断y为奇数的关系表达式:。 14、设有以下变量定义,并已赋确定值 char w; int x; float y; double z; 则表达式w*x+z-y所求得的数据类型为。 15、设i、j、k均为int型变量,则执行完下面的for循环后,k的值为。 for(i=0, j=10; i<=j; i++, j--) k=i+j; 16、语句:x++; ++x; x=x+1; x=1+x; 执行后都使变量x中的值增1,请写出一条相同功能的赋值语句(不得与列举的相同):。 17、设a,b,c均为整型数,且a=1,b=2,c=3,则语句a-=a+(++b)+(c--);被执行后a的值是。 18、若有定义“int a[2][3] = {1,3,5,7,9,11}; ”则a[1][0]的值是,*(*(a +1)+2))的值是。 19、设X为int型变量,请写出描述“X是偶数”的表达式是:。 20、C语言提供的三种逻辑运算符是、和!; 二、选择题 (1) 以下非法的赋值语句是 A) n=(i=2,++i); B)j++; C) ++(i+1); D)x=j>0; (2) 设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是

简单C语言程序的例子

例子: #include main () { tips(); /*caller*/ printf(“\n Success is about banging on after others have let go”); } tips() /*caller*/ { printf (“\n When you reach the end of the rope tie a knot & hang on”,)0; } [上述程序的输出结果如下: When you reach the end of the ropt tie a knot & hang on. Success is about hanging on after others have let go.] #include main() { int a,fact; printf(“\nEnter any number”); scanf(“%d”,&a); fact=rec(a); printf(“Factorial value is%d”,fact); } rec(x); int x; { int f; if(x==1) return(1); else f=x*rec(x-1); return(f); } [其显示的结果为:Factorial value is 2.] 比较两个数较大的那个: #include main()

{ int a,b,max; scanf (“%d%d”,&a,&b); if (a>b) max=a; else max=b; printf (“%d”,max); } 输出a+b的值: #include void main() { int a,b,x; scanf (“%d%d”,&a,&b); x=a+b; printf (“%d”,x); } 输出a,b中最大的一位数: #include int max(int x,int y) { int z; if (x>y) z=x; else z=y; return(z); } void main() { int a,b,c; scanf (“%d%d”,&a,&b); c=max(a,b); printf (“%d\n”,c); } 输出Hello: #include int main() { printf (“Hello!”);

C语言程序设计期末考试及答案

第一次试验1.编写一个程序,求出给定半径r的圆的面积和周长,并且输 出计算结果。其中:r的值由用户输入,用浮点型数据处理。 #include<> voidmain() { floatPI=; floatr,area,perim; printf("请输入圆的半径:\n"); printf("r="); scanf("%f",&r); } 2.给一百分制成绩,要求输出成绩等 级’A’、’B’、’C’、’D’、’E’。90分以上 为’A’,80~89分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’。 #include<> voidmain() { intiNum; printf("请输入分数:"); scanf("%d",&iNum); switch(iNum/10) { case10: case9:printf("学生成绩A\n");break; case8:printf("学生成绩B\n");break; case7:printf("学生成绩C\n");break; case6:printf("学生成绩D\n");break; default:printf("学生成绩E\n");break; } }

3. 输入两个正整数m 和n ,求其最大公约数和最小公倍数。 #include<> intmain() { intp,r,n,m,temp; 4. printf("请输入两个正整数n,m:");.a (n 个a )之值,其中a 是一个数字。例如:2+22+222+2222+22222(此时n=5),n 由键盘输入。 #include<> intmain(void) { intsum=0; intsun=0; inta; intn; inti=0; printf("请入入a 值(整数):\n"); printf("a="); scanf("%d",&a); printf("请入入n 值:\n"); printf("n="); scanf("%d",&n); while(i

C语言程序设计期末考试试卷(A卷)

一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是。 A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是 A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由。 A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是 A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为 A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是。 A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是。#include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是。 A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是。 #include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9

第三章 最简单的c程序设计

第三章最简单的c程序设计 实践教学: 属性:实训 时间:学时。 实践教学内容: 实验目的:熟悉运算符、表达式,掌握标准输入输出函数的适用方法和顺序结构程序设计的一般方法。 实验内容和步骤: 1.编程,要求从键盘按规定的格式输入时间(时:分:秒), 并将输入的时间在屏幕上显示出来,存入ex3_1.c文件, 并编译、调试、运行。 #include main() { int a ,b,c; scanf("%d%d%d",&a,&b,&c); if (a>24) printf("请重新输入"); if (b>60) printf("请重新输入"); if (c>60) printf("请重新输入"); printf("%d:%d:%d\n",a,b,c); return 0; }

2.编程,要求从键盘输入数据,使整型变量a=10,b=8;字符 型c1=’A’,c2=’a’;实型变量x=3.1,y=64.54。并按规定格式输出变量的值。格式如下。存入ex3-2.c文件,并编译、调试、运行。 __int___a=__10___b=____8 char_c1=__A,___c2=____a float___x=_3.1,___y=64.54 #include main() { int a=10,b=8; char c1='A',c2='a'; float x=3.1,y=64.54; return 0; } 3.c语言编程求ax2+bx+c=0并分析其结果。存入ex3_2.c文 件,并编译、调试、运行。 #include

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

C语言程序设计期末考试试题及答案

C 语言程序设计 试 题 (2008 /2009 学年 第 二 学期) 一. 选择题(满分30分,每题2分) 1.若a 、b 、c 都定义为int 类型且初值为0,则以下不正确的赋值语句是 D 。 A. a=b=c+8; B. a+=y+3; C. c++; D. a+b+c 2. 已知int j ,i=1;执行语句“j=i++;”后,变量i 的值是 B 。 A. 1 B. 2 C. –1 D. -2 3.执行下面程序: #include "stdio.h" void main() { int a=1,b=2,c=3; c=(a+=a+2),(a=b,b+3); printf(“%d,%d,%d ”,a,b,c); } 则输出结果是: A 。 A. 2,2,4 B. 4,2,3 C. 5,5,3 D. 4,2,5 4.若要求在if 后一对圆括号中表示a 不等于0的关系,则能正确表示这一关系的表达式为 D 。 A. a< >0 B. !a C. a=0 D. a 5. for (j=0;j<11;j++);循环结束后,j 的值是 B 。 A. 12 B. 11 C. 10 D. 9 6. C 语言中函数返回值的类型由 D 决定的。 A. return 语句中的表达式类型 B. 调用该函数的主调函数的类型 C. 调用函数时临时决定 D. 定义函数时所指定的函数类型 7. 下列说法中正确的是 B 。 A 在调用用户自定义函数时,必须对其进行声明。 B 函数可以返回一个值,也可以什么值也不返回。 C 说明函数时,必须明确参数的类型和返回值。 D 在程序设计中空函数没有什么作用。 8. 若int i=10;执行下列程序后,变量i 的正确结果是 D 。 switch ( i ) {case 0: i+=1; case 10: i+=1; case 11: i+=1; default: i+=1; } A. 10 B. 11 C. 12 D. 13 9. 下列语句中不正确的字符串赋值或初始化的是 C 。 A . char str[10]={"strings"}; B.char str[8]={'s','t','r','i','n ','g','s','\0'}; C. char str[10]; str= "strings"; D. char str[]= "strings"; 10. 有如下程序: #include void main() { int a=1,b=0,c=0; if (a

简单C语言程序的例子

简单C语言程序的例子 Prepared on 22 November 2020

例子: #include<> main() { tips();/*caller*/ printf(“\nSuccessisaboutbangingonafterothershaveletgo”); } tips()/*caller*/ { printf(“\nWhenyoureachtheendoftheropetieaknot&hangon”,)0; } [上述程序的输出结果如下:Whenyoureachtheendoftheropttieaknot&hangon. Successisabouthangingonafterothershaveletgo.] #include<> main() { inta,fact; printf(“\nEnteranynumber”); scanf(“%d”,&a); fact=rec(a); printf(“Factorialvalueis%d”,fact); } rec(x); intx; { intf; if(x==1) return(1); else f=x*rec(x-1); return(f); } [其显示的结果为:Factorialvalueis2.] 比较两个数较大的那个: #include<> main() { inta,b,max;

scanf(“%d%d”,&a,&b); if(a>b) max=a; elsemax=b; printf(“%d”,max); } 输出a+b的值: #include<> voidmain() { inta,b,x; scanf(“%d%d”,&a,&b); x=a+b; printf(“%d”,x); } 输出a,b中最大的一位数:#include<> intmax(intx,inty) { intz; if(x>y)z=x; elsez=y; return(z); } voidmain() { inta,b,c; scanf(“%d%d”,&a,&b); c=max(a,b); printf(“%d\n”,c); } 输出Hello: #include<> intmain() { printf(“Hello!”); return0; } 求1~100的和: #include<>

C语言程序设计期末考试试题(含答案)

C语言程序设计期末考试试题(含答案) 一、单项选择题(本大题共20题,每题2分,共40分) 1、以下不是C语言的特点的是() A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是() A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由() A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是() A、有零个或多个输入 B、有零个或多个输出 C、有穷性

D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为() A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是() A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是()。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123

C、45 D、345 8、若有以下定义int a,b;float x,则正确的赋值语句是() A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是() #include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是() #include main() { char c1='A',c2='Y';

简单的C程序介绍

简单的C程序介绍 例1: main()主函数说明 { 程序框架 printf(“abcdef”);函数体 } 语句 程序的功能是输出字符串:abcdef 例2:求两数之和。 main() { int a,b,c; a a=100; b=50; b c=a+b; c printf(“\n c=%d”,c); } 程序运行结果:c=150 例3:求两数中的最大值。函数类型函数名形参 main() int max (int x,int y) { int a,b,c; { int z; scanf(“%d,%d”,&a,&b); if(x>y) z=x; c=max(a,b); else z=y; printf(“\nmax is:%d”,c); return(z); } } a x b y c z (两个函数组成) C 的数据类型 ●基本类型(整型、实型、字符型、枚举型) ●构造类型(略) ●指针类型(略) ●空类型各类型包含常量与变量

3.2 常量与变量 ■常量与符号常量 常量 在程序运行过程中其值保持不变的量。 符号常量 用来代表一个常量的标识符。 #define PI 3.1415926 例: #define PI 3.1415926 main() { float r=2,c; c=2*PI*r; printf(“%f”,c); } ■变量 其值可以改变的量。 变量的三要素: ①变量名 每个变量有一个名字,作为识别该变量的标识符。 ②变量的值 每个变量有一个值,变量的值是随时可以改变的。 ③变量的存储单元 每个变量占据一个内存单元,用于存放变量的值。 变量名 a 变量值 存储单元 变量的命名规则: 由字母、数字和下划线组成 以字母或下划线开头

实验项目:实验一 最简单的C程序设计

实验项目:实验一最简单的C程序设计 (所属课程:《C语言程序设计》学时:2) 一、实验目的 1.掌握:使用标准输入/输出函数进行常见数据类型的数据的输入/输出方法。 2.初步培养编制程序框图和源程序、准备测试数据以及实际调试程序的独立编程能力。 3.掌握顺序结构程序设计的基本思路。 二、实验条件 Pc和vc++编程环境 三、实验内容 1.熟悉编程环境。 2.输入并运行一个C程序 3.掌握各种格式转换符的正确使用方法。 4.编程序:设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。要求用scanf函数从键盘上输入数据(半径和高),输出各计算结果,输出时要求有文字说明,取小数点后2位数字。5.编程序:用getchar函数输入两个字符给C1、C2,然后分别用putchar 函数和printf函数输出这两个字符。 四、实验步骤 编写程序,输入数据,观察结果。 五、实验结果 观察结果和预期是否一致。 实验项目:实验二选择结构程序设计

(所属课程:《C 语言程序设计》学时:2) 一、实验目的 1.了解C 语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。 2.学会正确使用逻辑运算符和逻辑表达式。 3.熟练掌握if 语句和switch 语句 二、实验条件 Pc 和vc++编程环境 三、实验内容 1.有一函数: ?? ???≥-<≤-<=)10x (113x )10x 1(12x )1x (x y 用scanf 函数输入x 的值,求y 值。 运行程序,输入x 的值(分别为x<1、1≤x <10、x ≥10三种情况),检查输出的y 值是否正确。 2.给出一个百分制成绩,要求输出成绩等级A 、B 、C 、D 、E 。90分以上为A ,81~89分为B ,71~79分为C ,61~69分为D ,60分以下为E 。 3.输入4个整数,要求按由小到大顺序输出。 四、实验步骤 编写程序,输入数据,观察结果。 五、实验结果 观察结果和预期是否一致。 实验项目:实验三 循环结构程序设计

C语言 实验五 最简单的C语言程序设计

实验5:最简单的C语言程序设计 一、实验目的: (1)掌握C语言中使用最多的一种语句——赋值语句的使用方法。(2)掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。(3)进一步掌握编写程序和调试程序的方法。 二、实验内容和步骤: 1、通过下面的程序掌握各种格式转换符的正确使用方法。 (1)输入以下程序: /* Note:Your choice is C IDE */ # include int main( ) {int a,b; float d,e; char c1,c2; double f,g; long m,n; unsigned int p,q; a=61,b=62; c1='a';c2='b'; d=3.56;e=-6.87; f=3157.890121;g=0.123456789; m=50000;n=-60000; p=32768;q=40000; printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.12f\nm=%1d\np=%u,q=%u\n",f,g,m,n,p,q); 显示结果: (2)运行此程序并分析结果。 (3)在此基础上,将程序第10~14行改为c1=a,c2=b; f=3157.890121;g=0.123456789; d=f;e=g;运行程序,分析结果。 /* Note:Your choice is C IDE */ #include"stdio.h"

int main() {int a,b; float d,e; char c1,c2; double f,g; long m,n; unsigned int p,q; a=61;b=62; c1=a;c2=b; f=3157.890121;g=0.123456789; d=f;e=g; p=a=m=50000;q=b=n=-60000; printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.12f\nm=%1d,n=%1d\np=%u,q=%u\n",f,g,m,n,p,q); } 显示结果: (4)用sizeof运算符分别检测程序中各类型的数据占多少字节。例如,int型变量a的字节数为sizeof(a)或sizeof(int),用printf函数语句输出各类型变量的长度(字节数)。 程序如下: # include int main( ) {printf("int:%d\n",sizeof(int)); return 0; } 显示结果: #include int main( ) {printf("float:%d\n",sizeof(float)); return 0; }

C语言程序设计期末考试题及答案

装订线

装订线

装订线

订 线

庄子云:“人生天地之间,若白驹过隙,忽然而已。”是呀,春秋置换,日月交替,这从指尖悄然划过的时光,没有一点声响,没有一刻停留,仿佛眨眼的功夫,半生已过。 人活在世上,就像暂时寄宿于尘世,当生命的列车驶到终点,情愿也罢,不情愿也罢,微笑也罢,苦笑也罢,都不得不向生命挥手作别。 我们无法挽住时光的脚步,无法改变人生的宿命。但我们可以拿起生活的画笔,把自己的人生涂抹成色彩靓丽的颜色。 生命如此短暂,岂容随意挥霍!只有在该辛勤耕耘的时候播洒汗水,一程风雨后,人生的筐篓里才能装满硕果。 就算是烟花划过天空,也要留下短暂的绚烂。只有让这仅有一次的生命丰盈充实,才不枉来尘世走一遭。雁过留声,人过留名,这一趟人生旅程,总该留下点儿什么! 生活是柴米油盐的平淡,也是行色匆匆的奔波。一粥一饭来之不易,一丝一缕物力维艰。 前行的路上,有风也有雨。有时候,风雨扑面而来,打在脸上,很疼,可是,我们不能向生活低头认输,咬牙抹去脸上的雨水,还有泪水,甩开脚步,接着向前。 我们需要呈现最好的自己给世界,需要许诺最好的生活给家人。所以,生活再累,不能后退。即使生活赐予我们一杯不加糖的苦咖啡,皱一皱眉头,也要饮下。 人生是一场跋涉,也是一场选择。我们能抵达哪里,能看到什么样的风景,能成为什么样的人,都在于我们的选择。 如果我们选择面朝大海,朝着阳光的方向挥手微笑,我们的世界必会收获一片春暖花开。如果我们选择小桥流水,在不动声色的日子里种篱修菊,我们的世界必会收获一隅静谧恬淡。 选择临风起舞,我们就是岁月的勇者;选择临阵脱逃,我们就是生活的懦夫。 没有淌不过去的河,就看我们如何摆渡。没有爬不过去的山,就看我们何时启程。 德国哲学家尼采说:“每一个不曾起舞的日子,都是对生命的辜负。”让我们打开朝着晨光的那扇窗,迎阳光进来,在每一个日出东海的日子,无论是鲜衣怒马少年时,还是宠辱不惊中年时,都活出自己的明媚和精彩。 时间会带来惊喜,只要我们不忘记为什么出发,不忘记以梦为马,岁月一定会对我们和颜悦色,前方也一定会有意想不到的惊喜。 人生忽如寄,生活多苦辛。 短暂的生命旅程, 别辜负时光,别辜负自己。 愿我们每一个人自律、阳光、勤奋,

相关文档
相关文档 最新文档