#include<stdio.h>
intmain(void){
intnum[]={1,2,3,4,5,6,7,8,9,0}
charstr[]="http://see.xidian.edu.cn/cpp/"
inti
// num, str 是地址,由系统分配,与数组本身没有任何关系
printf("num = %d, str = %d\n",num,str)
// num, str 指向数组首地址
printf("&num[0] = %d, &str[0] = %d\n",&num[0],&str[0])
// num 等价于 &num[0]
if(num==&num[0]){
printf("num = &num[0]\n")
}
// str 等价于 &str[0]
if(str==&str[0]){
printf("str = &str[0]\n")
}
// 要为某个数组元素赋值,必须取该元素的地址
printf("input a number: ")
scanf("%c",&str[0])
// scanf() 从 stdin 缓冲区读取数据
// fflush() 用来清空缓冲区,让 scanf() 重新从控制台读取
// 关于 fflush() 详细解释请查看:
C语言fflush()
fflush(stdin)
printf("input a char: ")
scanf("%c",&str[0])
fflush(stdin)
// 使用 scanf() 为数组赋值时
// 可以使用 %s 为字符数组整体赋值
// 但是没有特定的格式化字符串来为 int数组整体赋值,必须一个一个赋值
printf("Input a string: ")
scanf("%s",str)// str为地址,不需加&
fflush(stdin)
printf("Input 10 number: ")// 以空格为间隔
for(i=0i<10i++){
scanf("%d",&num[i])// num[i]为某个元素,必须要加&取得它的地址
}
// 取前5个元素作为示例
printf("The final num[] = %d, %d, %d, %d, %d\n",num[0],num[1],num[2],num[3],num[4])
printf("The final str[] = %s\n",str)
return0
}
运行结果:num = 1638176, str = 1638164&num[0] = 1638176, &str [0] = 1638164num = &num[0]str = &str[0]input a number: 5↙input a char: e↙Input a string: C语言中文网↙Input 10 number: 12 34 56 78 90 23 45 78 09 54↙The final num[] = 12, 34, 56, 78, 90The final str[] = C语言中文网再强调一次,数组类型是数组元素的类型,数组名是指向数组首地址的指针,scanf() 的参数列表必须是指针。
#include<stdio.h>int f1(int x)
{
int r=1,ans=0
while(x>0)
{
x/=10
ans++
}
for(int i=1i<=ansi++)
r*=10
return r
}
int main()
{
for(int i=1i<=20000i++)
{
int k=f1(i)
if(i*10/k>1) i=k*10
int n1=i*10+6,n2=k*6+i
if(n1*4==n2) printf("%d %d\n",n1,n2)
}
return 0
}