在windows下,写出运行打印结果。 #include <iostream.h> #include <string.h> void func(char str[100]) { } void main(void) { char str[ ]= “Hello”; char *p=str; int n=10; cout<<sizeof(str)<<endl; cout<<sizeof(p)<<endl; cout<<sizeof(n)<<endl; cout<<sizeof(func)<<endl; return; }
时间: 2023-08-20 21:52:47 浏览: 91
在 Windows 系统下运行这段代码将会得到以下的输出结果:
100
4
4
1
让我解释一下代码的执行过程:
首先,我们包含了 `<iostream.h>` 和 `<string.h>` 头文件。
然后,我们定义了一个函数 `func`,接受一个长度为100的字符数组作为参数。
接下来,在 `main` 函数中,我们声明了一个名为 `str` 的字符数组,并初始化为 "Hello"。
然后,我们声明了一个指向字符的指针变量 `p`,并将其指向 `str`。
接着,我们声明了一个整型变量 `n`,并赋值为 10。
接下来,我们使用 `sizeof` 运算符来输出不同变量的大小。
- `sizeof(str)` 输出的是 `str` 数组的大小,即100个字符(每个字符占1字节),所以输出结果为 100。
- `sizeof(p)` 输出的是指针变量 `p` 的大小,在32位系统下,指针占用4个字节,所以输出结果为 4。
- `sizeof(n)` 输出的是整型变量 `n` 的大小,整型变量在32位系统下占用4个字节,所以输出结果为 4。
- `sizeof(func)` 输出的是函数 `func` 的大小,函数不占用任何存储空间,所以输出结果为 1(实际上在某些编译器中可能会输出其他值)。
最后,我们使用 `cout` 对象来输出上述结果。
因此,代码的输出结果为:
100
4
4
1
相关问题
1、在windows下,写出运行打印结果。 #include <iostream.h> #include <string.h> void func(char str[100]) { } void main(void) { char str[ ]= “Hello”; char *p=str; int n=10; cout<<sizeof(str)<<endl; cout<<sizeof(p)<<endl; cout<<sizeof(n)<<endl; cout<<sizeof(func)<<endl; return; } 2、设变量a是整型,f是字符型,i是双精度型,则表达式10+a+i*f值的数据类型为什么? 3、请写出以下代码的打印结果 #include<stdio.h> void main( void ) { int a[5]={1, 8, 3, 9, 6}; printf("%d",*(a+3)); } 4.下面程序的输出结果是 。 char b[]=“ABCD”; void main() { char *chp; for(chp=b; *chp; chp+=2) printf(“%s”, chp); printf(“\n”); }
1、在Windows下,代码如下:
```
#include <iostream>
#include <string.h>
using namespace std;
void func(char str[100]) {}
int main() {
char str[] = "Hello";
char *p = str;
int n = 10;
cout << sizeof(str) << endl;
cout << sizeof(p) << endl;
cout << sizeof(n) << endl;
cout << sizeof(func) << endl;
return 0;
}
```
运行结果如下:
```
6
4
4
1
```
2、表达式10+a+i*f的值的数据类型为双精度型,因为i是双精度型,f是字符型,字符型会自动转换为整型,整型和双精度型的运算结果是双精度型。
3、代码的打印结果是:
```
9
```
4、程序的输出结果是:
```
AC
```
二进制求和#include<iostream> #include<string> #include<cstring> using namespace std; int func1(string s) { int a=s.size(),b=0; for(int i=a-1;i>=0;i--) { b+=2^i*s[i]; } return b; } string func2(int a) { int i=0; string str,Str; str[0]=a; while(a) { str[i]=a%2; a=a/2; i++; } i--; for(int j=0;j<i;j++,i--) { Str[j]=str[i]; cout<<Str[j]; } cout<<endl; } int main() { string a,b; cin>>a>>b; int a1=func1(a); int b1=func1(b); func2(a1+b1); return 0; }
这段代码是实现二进制加法的,但是存在一些问题。首先,在函数`func2`中,`str`和`Str`都是空的字符串,没有初始化,因此访问它们的元素是非法的。其次,在计算二进制和的过程中,使用了异或运算符`^`,但是应该使用位运算符`&`和`|`来实现二进制加法。
以下是修改后的代码:
```
#include<iostream>
#include<string>
using namespace std;
int func1(string s) {
int a = s.size(), b = 0;
for(int i = a - 1; i >= 0; i--) {
b += (1 << (a - 1 - i)) * (s[i] - '0');
}
return b;
}
void func2(int a) {
string Str = "";
while(a) {
Str = char(a % 2 + '0') + Str;
a = a / 2;
}
cout << Str << endl;
}
int main() {
string a, b;
cin >> a >> b;
int a1 = func1(a);
int b1 = func1(b);
func2(a1 + b1);
return 0;
}
```
在函数`func1`中,使用位运算符`<<`来计算2的幂次方,使用字符`'0'`来将字符型数字转为整型数字。
在函数`func2`中,每次将余数加到字符串头部,最后输出即可。
阅读全文