C语言的题目
int x1, x2;
char y1, y2;
scanf("%d%c%d%c", &x1, &y1, &x2, &y2);
若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的数据输入是( )。(注:└┘代表空格)
A.10A└┘20B B.10└┘A20B
C.10 └┘A└┘20└┘ B D.10A20└┘B
若变量已正确说明为float类型, 要通过语句scanf("%f %f%f", &a, &b, &c);给a赋予10.0, b赋予22.0, c赋予33.0, 不正确的输入形式为()。
A.10<回车> B.10.0,22.0,33.0<回车>
22<回车>
33
C.10.0<回车> D.10 22<回车>
22.0 33.0<回车> 33<回车>
有如下程序,若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的数据输入是( )。(注:└┘代表空格)
int x1, x2;
char y1, y2;
scanf("%d%d", &x1,&x2);
scanf("%c%c", &y1,&y2);
A.1020AB B.10└┘20└┘ABC
C.10└┘20<回车> D.10└┘20AB
AB
有如下程序段,对应正确的数据输入是( )。
float x,y;
scanf("%f%f", &x,&y);
printf("a=%f,b=%f", x,y);
A.2.04<回车> B.2.04,5.67<回车>
5.67<回车>
C.A=2.04,B=5.67<回车> D.2.055.67<回车> 展开
int x1, x2;
char y1, y2;
scanf("%d%c%d%c", &x1, &y1, &x2, &y2);
若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的数据输入是( )。(注:└┘代表空格)
A.10A└┘20B B.10└┘A20B
C.10 └┘A└┘20└┘ B D.10A20└┘B
>>>>A
若变量已正确说明为float类型, 要通过语句scanf("%f %f%f", &a, &b, &c);给a赋予10.0, b赋予22.0, c赋予33.0, 不正确的输入形式为()。
A.10<回车> B.10.0,22.0,33.0<回车>
22<回车>
33
C.10.0<回车> D.10 22<回车>
22.0 33.0<回车> 33<回车>
>>>>B
有如下程序,若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的数据输入是( )。(注:└┘代表空格)
int x1, x2;
char y1, y2;
scanf("%d%d", &x1,&x2);
scanf("%c%c", &y1,&y2);
A.1020AB B.10└┘20└┘ABC
C.10└┘20<回车> D.10└┘20AB
AB
>>>>D
有如下程序段,对应正确的数据输入是( )。
float x,y;
scanf("%f%f", &x,&y);
printf("a=%f,b=%f", x,y);
A.2.04<回车> B.2.04,5.67<回车>
5.67<回车>
C.A=2.04,B=5.67<回车> D.2.055.67<回车>
>>>>A
规则只有一个, 就是scanf中的格式,和实际输入的格式,必须完全匹配.
#include<stdio.h>
void main()
{
unsigned char *p1;
unsigned long *p2;
p1=(unsigned char*)0x801000;
p2=(unsigned long*)0x810000;
printf("p1=%x\n",p1);
printf("p2=%x\n",p2);
p1=p1+5;
p2=p2+5;
printf("p1+5=%x\n",p1);
printf("p2+5=%x\n",p2);
}
结果:
p1=801000
p2=810000
p1+5=801005
p2+5=810014
Press any key to continue
解释:
p1=(unsigned char*)0x801000;
是给指针变量赋值,即把十六进制0x801000放到字符指针变量中,即指针变量p1的值就是0x801000
p2=(unsigned long*)0x810000;也是给指针变量赋值,同上
输出结果p1+5的值是801005,因为指针变量指向的值字符,加一表示指针向后移动一个字节,那么加5代表向后移动5个字节,所以输入801005
p5+5的值是801016,因为指针变量指向的长整形的,加一表示指针向后移动4个字节,那么加5代表向后移动20个字节,所以输入810014,(输出时十六进制)要是十进制就是810020了
#include "stdio.h"
int main(int argc,char *argv[]){
char ch;
int uc,lc,di,oh;
uc=lc=di=oh=0;
printf("Please enter a string('q'/'Q' end)...\n");
while(scanf(" %c",&ch)==1){
if(ch>='A' && ch<='Z')
uc++;
else if(ch>='a' && ch<='z')
lc++;
else if(ch>='0' && ch<='9')
di++;
else
oh++;
if(ch=='q' || ch=='Q')
break;
}
printf("Uppercase:\t%d\nLowercase:\t%d\n Numbers:\t%d\n Other:\t%d\n",uc,lc,di,oh);
return 0;
}
运行样例:
{
float score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
float *search(float(*pointf[4])); /*改为float *search(float(*pointf)[4]);不然为指针数组*/
float *p;
int i,j;
for(i=0;i<3;i++)
{
p=search(score+i);
if(p==*(score+i))
{
printf("nember: %d ",i);
for(j=0;j<4;j++)
printf("%5.2f ",*(p+j));
printf("\n");}
}
}
float *search(float(*pointf)[4])
{
int i;
float *pt;
pt=*(pointf+1);
for(i=0;i<4;i++)
if(*(*pointf+i)<60) pt=*pointf;
return(pt);
}
以上修改后可以运行,输出结果为:
number : 1 56.00 89.00 67.00 88.00
number: 2 34.00 78.00 90.00 66.00
输出结果正确
至于您所说的
2.if(*(*pointf+i)<60) ,里面的*(*pointf+i)代表的是什么意思
pointf为指向含有4个元素的一维数组的指针变量,*pointf就是某行的首列地址,*pointf+i为某行第i列的元素地址,则*(*pointf+i)就是某行第i列的元素值,判断其是否小于60.
3.*(pointf+1) 是指向数组pointf 中第一行的数吗? 如果是 照题目成立的话就是point +2也就是第二行数据 对吗?
答:应该不是吧,pointf是子函数中的一个指向一维数组的指针变量,不是数组,它接收主函数中传递过来的实参,如果实参是score+0则子函数中*(pointf+1)指向score数组的第一行首元素,为列指针,其值为&score[1][0],pointf+1指向score数组第一行,是行指针,而当实参是score+1时,则*(pointf+1)指向score数组的第二行首元素,pointf+1就指向score数组第二行
所以说具体它指向第几行的首元素,要看实参传递过来的值为什么地址了。
希望能够帮到您。
#include "windows.h"
#include "stdio.h"
#define COUNT_NUM16
void Fun1()// 对二维数组求和
{
printf("二维数组:\n");
int nSum = 0;
int arrData[COUNT_NUM][COUNT_NUM] = {0};
for(int i = 0; i < COUNT_NUM; i++)
{
for(int j = 0; j < COUNT_NUM; j++)
{
arrData[i][j] = rand()%100;// 100以内随机数
nSum += arrData[i][j];
printf("%02d ", arrData[i][j]);
}
printf("\n");
}
printf("二维数组和:%d\n", nSum);
}
void BubbleSort(int arrData[], int n)// 冒泡
{
printf("冒泡排序前:");
for(int i = 0; i < n; i++)
{
printf("%d ", arrData[i]);
}
printf("\n");
for(int i = 0; i < n; i++)
{
for(int j = i; j < n; j++)
{
if(arrData[i] > arrData[j])
{
int nTmp = arrData[i];
arrData[i] = arrData[j];
arrData[j] = nTmp;
}
}
}
printf("冒泡排序后:");
for(int i = 0; i < n; i++)
{
printf("%d ", arrData[i]);
}
printf("\n");
}
void SelectionSort(int arrData[], int n)// 选择排序
{
printf("选择排序前:");
for(int i = 0; i < n; i++)
{
printf("%d ", arrData[i]);
}
printf("\n");
for(int i = 0; i < n - 1; i++)
{
for(int j = i + 1; j < n; j++)
{
if(arrData[i] > arrData[j])
{
int nTmp = arrData[i];
arrData[i] = arrData[j];
arrData[j] = nTmp;
}
}
}
printf("选择排序后:");
for(int i = 0; i < n; i++)
{
printf("%d ", arrData[i]);
}
printf("\n");
}
void main()
{
Fun1();
int arrData1[COUNT_NUM] = {3,4,5,1,76,12,55,63,78,13,21,45,33,67,89,19};
BubbleSort(arrData1, COUNT_NUM);
int arrData2[COUNT_NUM] = {85,65,14,22,95,88,75,36,25,118,55,4,85,66,24,45};
SelectionSort(arrData2, COUNT_NUM);
system("pause");
}